使用jQuery解析复杂的XML

时间:2012-06-26 14:05:12

标签: jquery xml parsing

我正在尝试使用以下jQuery解析以下XML。页面上没有显示任何内容。我知道它正在获取文件。我在网上看过,虽然有很多用jquery解析xml的例子,但是没有一个看起来像这种格式。

XML:

<?xml version="1.0" encoding="utf-8"?>
<wcm:root xmlns:wcm="http://www.stellant.com/wcm-data/ns/8.0.0" version="8.0.0.0">

    <wcm:element name="title"></wcm:element>
    <wcm:element name="wide_image">&lt;img src=&#39;[!--$wcmUrl&amp;amp;x28;&#39;resource&amp;#39;,&amp;#39;CMS3_130980&amp;#39;&amp;amp;x29;--]&amp;#39;/&gt;</wcm:element>
    <wcm:element name="image">&lt;img src="[!--$wcmUrl('resource','CMS3_132821')--]"/&gt;</wcm:element>
    <wcm:element name="body">&lt;p&gt;
        Paragraph of text goes here.&lt;br /&gt;&lt;br /&gt;
        Paragraph of text goes here.&lt;br /&gt;&lt;br /&gt;
        Paragraph of text goes here.&lt;br /&gt;&lt;br /&gt;
        Paragraph of text goes here.&lt;br /&gt;&lt;br /&gt;
        Paragraph of text goes here.&lt;/p&gt;
</wcm:element>
</wcm:root>

HTML&amp; jQuery的:

<html>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>

<script type="text/javascript">

$(document).ready(function () {
    $.ajax({
        type: "GET",
        url: "link_to_my_file.xml",
        dataType: "xml",
        success: parseXml
    });
});

function parseXml(xml){
    $(xml).find("wcm\\3a root").each(function(){
    alert("Test");
        $("#output").append($(this).attr("title") + "<br />");
        $("#output").append($(this).attr("wide_image") + "<br />");
        $("#output").append($(this).attr("image") + "<br />");
        $("#output").append($(this).attr("body") + "<br />");
        });
     };

</script>

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

</html>

1 个答案:

答案 0 :(得分:0)

您必须escape选择器中的:http://mothereff.in/css-escapes#1wcm%3Aroot

所以,而不是:

$(xml).find("wcm:root")

使用:

$(xml).find("wcm\\3a root")

此外,您的代码段是无效的JavaScript(在}函数声明后缺少parseXml)。检查错误控制台。