2012-06-26 81 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。 –