2011-06-08 104 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