2012-06-26 61 views
1

我想用下面的jQuery解析下面的XML。页面上没有显示任何内容。我知道它正在获取文件。我看过网上,虽然有很多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 &的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> 
+0

'parseXml'函数未终止......您需要'}'那里。使用缩进将使您更容易看到这些问题。 – Esailija

+0

@Esailija谢谢你指出。我更新了上面的代码,现在没有控制台错误。 –

回答

0

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

因此,而不是:

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

用途:

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

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

+0

谢谢,我已经更新了上面的parseXml函数。还是行不通。虽然我现在在错误控制台中没有收到任何错误。 jQuery中的 –

+0

'.find(“wcm \\:root”)'应该可以工作。 – Esailija

+0

@Esailija是的,但我宁愿主张使用'\ 3a',因为它在IE <8的CSS中工作,而'\:'不能。更安全地始终使用'\ 3a'。有关详细信息,请参阅http://mathiasbynens.be/notes/css-escapes。 –