如何为特殊字符编写正确的xml

时间:2012-07-17 14:20:16

标签: javascript xml svg

我正在尝试从使用特殊字符的字符串中编写正确的svg。我正在使用UTF-8编码svg文档。我正在使用javascript。 字符串就像:

<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 Parsing错误。

1 个答案:

答案 0 :(得分:2)

这不是错误的XML。

可能是您的服务器在HTTP标头中发送了错误的character encoding information

(由于XML声明没有另外说明,您应该使用UTF-8)