2012-07-17 73 views
0

我想從使用特殊字符的字符串中編寫正確的svg。我爲svg文檔使用UTF-8編碼。我正在使用javascript。 該字符串是這樣的:如何爲特殊字符編寫正確的xml

<glyph unicode="&#xa5;" horiz-adv-x="819" /> 

在使用的DOMParser API編寫XML,將其轉換成¥¥這是不正確的XML和瀏覽器拋出XML解析錯誤。

這裏是我想轉換成SVG文檔的完整文本。

<?xml version="1.0" standalone="no"?> 
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" > 
<svg xmlns="http://www.w3.org/2000/svg"> 
<metadata></metadata> 
    <defs> 
    <font id="DearestRegular" horiz-adv-x="2048" > 
     <font-face units-per-em="2048" ascent="1638" descent="-410" /> 
     <glyph unicode="&#xa5;" horiz-adv-x="819" /> 
    </font> 
</defs> 
</svg> 

使用的DOMParser我得到的輸出,如:

<?xml version="1.0" standalone="no"?> 
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" > 
<svg xmlns="http://www.w3.org/2000/svg"> 
<metadata></metadata> 
    <defs> 
    <font id="DearestRegular" horiz-adv-x="2048" > 
     <font-face units-per-em="2048" ascent="1638" descent="-410" /> 
     <glyph unicode="¥" horiz-adv-x="819" /> 
    </font> 
</defs> 
</svg> 

這將引發XML解析錯誤的瀏覽器。

回答

2

這不是不正確的XML。

可能是您的服務器在HTTP標頭中發送了錯誤的character encoding information

(由於XML聲明沒有說,否則,你應該使用UTF-8)

+0

我只是用與XMLHttpRequest對象本地AJAX來讀取SVG文件。這裏是代碼:var req = new XMLHttpRequest(); req.open(「GET」,「Fonts/myFont.svg」,true); req.onreadystatechange = function(){if(4 == req.readyState){var text = req.responseText,dom =(new DOMParser ))。parseFromString(text,「image/svg + xml」)}}; req.send(null);我收到的doc對象爲字符¥提供了XML解析錯誤。對於正確的svg文檔,它應該是¥。 – radhe001 2012-07-18 05:58:21