2011-06-08 103 views
1

我有一個xml文件,其中包含html標籤,我使用jquery ajax解析。 我可以毫無問題地獲得文本值。如何獲取元素中的html部分?jquery解析html中的xml

編輯:我試着在cdata中包裝html,但寧願在xml中有xhtml。

$.ajax({ type: "GET", 
         url: "product.xml", 
         dataType: "xml", 
         success: function (xml) { 

          $(xml).find("product[productid=" + selection + "]").each(function() { 
           var $title = $(this).find("title").text();  //get title 
           var $desc = $(this).find("description").html();   //get description 
           //$('[nodeName=]',xml) 
           $("#producttitle").html(""); 
           $("#productdesc").append($desc); 
           $("#producttitle").append($title); 

          }); 

         } 

<product productid="1"> 
    <title>Active Directory</title> 
    <status>noinfo</status> 
    <description> 
     Headline 
     <b>tester</b> 
     <ul> 
      <li>test list element</li> 
     </ul> 
    </description> 
    <link title=""></link> 
</product> 

乾杯, 特里

+0

嗯,基本上平時jquery.ajax $阿賈克斯({類型: 「GET」, \t \t \t \t \t \t網址: 「product.xml」, \t \t \t \t \t \t數據類型: 「XML」, \t \t \t \t \t \t成功:功能(XML){....我得到使用var $ DESC = $值(本).find( 「說明」)文本(。 ); – 2011-06-08 10:08:36

回答

1

要獲得標籤的內容包括作爲標籤,而不是轉義爲文本內容,使用html

var $desc = $(this).find("description").html(); 

然而,如果你將這個內容插入到do中cument,你並不需要得到HTML - 你可以追加選擇:

$(this).find('description').clone().appendTo('#containingElement'); 

clone是有必要進口的節點。

+1

不幸的是,使用.html()將無法使用ajax數據類型xml。 – 2011-06-08 10:13:34

+0

@Terry謝謝,我刪除了那一點。 – lonesomeday 2011-06-08 10:18:24

+0

感謝您使用'clone'進行更新。沒有工作... – 2011-06-08 10:46:46

0

只要使用$(this).find(「description」)。html()似乎可以工作。

1

嘗試讀取XML文件作爲HTML:

$阿賈克斯({ 類型: 「GET」, 網址: 'file.xml', 數據類型: 「HTML」, 成功:功能(XML ){....

+0

使用'HTML'數據類型(而不是'XML')幫助解決了由於XML中包含不受支持的特殊字符編碼導致JQuery XML解析器失敗的問題。 – blackcompe 2014-06-26 14:06:50