【问题标题】:Javascript parsing remote xml with &signsJavascript 使用 &signs 解析远程 xml
【发布时间】:2013-10-08 09:54:53
【问题描述】:

我想解析来自 www.digiflora.se 的 xml 响应。但是标签之间的一些文本包含停止解析器的 & 符号。

由于它不是我的服务器,我无法更改生成的 XML。而且我无法在解析过程中进行替换,因为错误在此过程中发生得太早。

在调试时,我也对 Chrome 中的跨域限制感到困惑(有人说这也扩展到本地存储的文件)。但我认为下面的例子表明这与此无关。

我将一些有问题的文本粘贴到 w3shools 示例中。

XML

<?xml version="1.0" encoding="utf-8"?>
<note>
<to>Urvalslista f&ouml;r &ouml;rter och ris. &nbsp;&nbsp;</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

Javascript/jquery

$.ajax({
type: "GET",
url: "note.xml",
dataType: "html",
success: function(xml) {
$.parseXML( xml);
}
});

错误:

Uncaught Error: Invalid XML: <?xml version="1.0" encoding="utf-8"?>
<note>
<to>Urvalslista f&ouml;r &ouml;rter och ris. &nbsp;&nbsp;</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
jquery-1.10.2.js:516

继续:问题的更一般版本:我尝试了 2 个文件。示例WithoutAND.xml ,示例WithAND.xml 。当我尝试带有 &-sign 的那个时,我看不到任何弹出窗口。当我尝试不带 & 符号的那个时,我看到了弹出窗口。为什么?

exampleWithoutAND.xml:

<?xml version="1.0" encoding="utf-8"?>
<note>
<to>Urvalslista </to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

exampleWithAND.xml:

<?xml version="1.0" encoding="UTF-8"?>
<note>
<to>Urvalslista & </to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

以及完整的 javascript 代码:

<!DOCTYPE html>
<html>
<head>
 <title>jQuery and XML</title>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <meta name="language" content="en" />
 <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"</script>
</head>

<body
  <div id="output"></div>

  <script type="text/javascript">
    $(document).ready(function(){
      $.ajax({

        type: "GET",
        crossDomain:true,
        dataType: "xml",
        //url: "exampleWithoutAND.xml",
        url: "exampleWithAND.xml",
        success: function(xml) {
          alert("!");
        }
      });
     });

    </script>

</body>
</html>

【问题讨论】:

  • 你能设置jsFiddle吗?
  • 以前从未尝试过。 xml文件放在哪里?
  • 我在下面回答。试试看。

标签: javascript xml parsing


【解决方案1】:

将数据类型更改为xml。你不需要解析它。

$.ajax({
   type: "GET",
   url: "svfxml.php.xml",
   dataType: "xml",
   success: function(xml) {
       alert($(xml).find("title").text())
   }
});

【讨论】:

  • 对不起,我忘了改回来。将“html”更改为“xml”不起作用。如果 xml 文件中有 &-characters,我无法在 success: function (xml) {} 中执行任何操作。
  • 它对我有用。我更新了我的答案以检索包含很多 & 的标题。它返回“Urvalslista för örter och ris.   ”对我来说。
  • 我只是放了一个 alert("!");成功函数内没有其他内容。如果不是 & 则它可以工作(在 Firefox 中),但如果我只添加一个 & 则根本不行
  • 它对我有用。你得到什么错误?没有你的帮助很难说。
  • 或在某处设置示例。
猜你喜欢
  • 1970-01-01
  • 2011-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-29
  • 1970-01-01
  • 2012-07-30
  • 2017-09-11
相关资源
最近更新 更多