【问题标题】:Special Character problem in xml objectxml对象中的特殊字符问题
【发布时间】:2010-09-24 19:19:55
【问题描述】:

其实我只是 XML 的初学者。 在我的一项任务中,我正在执行以下操作:

var req = new XMLHttpRequest(); 
req.open('GET', 'http://www.mohin.com/test.xml', false);
req.send();  
var xmlObj = req.responseXML;

现在,我得到的 XML 是:

<?xml version="1.0" encoding="utf-8"?>
 <Items status="as">
    <Song title="Helios (Original Mix)">
       <Artist name="Chris Hingher" ID="291728"></Artist>
       <Info StartTime="19:37:39" JazlerID="2219" PlayListerID="" />
    </Song>
    <Song title="I Was Drunk">
       <Artist name="Riva Starr Feat. N�ze" ID="292052"></Artist>
       <Info StartTime="19:45:38" JazlerID="2267" PlayListerID="" />
    </Song>
    .............
 </Items>

您可以看到第二个标签的标签名称属性中有一个特殊字符,因此我遇到了解析错误,因此我无法读取 XML 对象。查看这个标签:&lt;Artist name="Riva Starr Feat. N�ze" ID="292052"&gt;&lt;/Artist&gt; 并查看它的 name 属性。

有没有人可以给我解决这个问题? 我真的需要像这样检索每个艺术家的名字:

var info = xmlObj.getElementsByTagName("Song")[0];
var artistName = info.childNodes[j].attributes.getNamedItem('name').nodeValue;

谢谢 莫欣

【问题讨论】:

    标签: javascript xml ajax


    【解决方案1】:

    看起来用于保存 XML 文档的编码不是 XML 序言中指定的编码 (encoding="utf-8")。如果 XML 文件由笨拙的编辑器手动编辑和保存,就会发生这种情况。

    假设您可以更改 XML 文档,请将 encoding 属性从“utf-8”修改为“iso-8859-1”。如果可行,那么您应该更加注意 XML 文档的编码。

    【讨论】:

    • 问题肯定出在服务器端。仅在 XML 声明中设置 UTF-8 是不够的。您必须使用 UTF-8 编码实际编写输出,否则它会出现在平台默认值中,在这种情况下,就像 @gawi 正确指出的那样,它看起来像 iso-8859-1。
    • 您好,非常感谢您的回答。我不能从我的代码中解决问题吗? XML 是软件生成的 XML,所以我无法更改或修改它
    • 您应该联系生成XML文档的网站负责人。对于这类问题,我想不出一个简单的 Javascript 解决方法。
    【解决方案2】:

    当您创建 XML 文件时,使用 UTF-8 保存它,并声明它是使用 UTF-8 保存的。

    【讨论】:

    • 您好,非常感谢您的回答。我不能从我的代码中解决问题吗?我无法更改或修改生成和保存 xml 的位置
    • @Mohin 问题是,它不是格式良好的 XML。坏了,有问题。总有一个点你可以拒绝一条输入,因为它不可行。这可能会也可能不会超过那个点。您可以尝试使用 tidy.sourceforge.net 之类的软件来清理编码问题。
    【解决方案3】:

    您检查过您的 XML 文件的编码格式吗?可能来自那里。

    【讨论】:

      猜你喜欢
      • 2013-12-16
      • 2011-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多