2011-03-18 70 views
0

我可以用jquery解析xml。现在我想要解析的文本是一个超链接而不是简单的文本。以下是我写的。添加一个链接到一个XML标签,并用jquery解析它

$(xml).find("customers") 
    .each(function(){ 
      $("#guys").append("<div class="mybox"><a href="+$(this).find('customer_link').text()+"target="_blank">"+$(this).find('customer_company').text()"</a></div>");                      

}); 

这里是XML

<customer_company><![CDATA[Google<br>]]></customer_company> 
    <customer_link>http://www.google.com</customer_link> 

</myguys> 

<myguys> 

    <customer_company><![CDATA[EMC<br>]]></customer_company> 
    <customer_link>http://www.emc.com</customer_link> 

</myguys> 
</info> 

我知道有没有错的逻辑,我认为这仅仅是与标签语法错误。有谁能告诉我在哪里,我在这里做了一个错误,指向我一个很好的教程

+0

我已经为你编辑了它,但是建议你多花一点时间把代码放在一边,如果你再次发布。 :-) – 2011-03-18 14:58:54

回答

1

您在混合引用样式。单引号(')字符串可以包含未转义的双引号("),反之亦然。在双引号字符串中使用双引号会破坏您的代码。

$("#guys").append("<div class="mybox"><a href="+$(this).find('customer_link') 
ss^ se^  ss^   se^ ss^  se^   ss^   se^ 

.text()+"target="_blank">"+$(this).find('customer_company').text()"</a></div>"); 
     ss^  se^ ss^e^   ss^    se^  ss^  se^ 

ss == string start, 
se == string end 

你可以看到这是如何创建随机未定义的引用,像mybox,但不建立你想要的字符串。 试试这个:或者

$("#guys").append("<div class='mybox'><a href=" + 
    $(this).find("customer_link").text() + 
    "' target='_blank'>" + 
    $(this).find("customer_company").text() + 
    "</a></div>"); 

,你可以使用jQuery建立的所有元素,并完全避免与嵌入在字符串引号的属性:

$("#guys").append($("<div />") 
         .addClass("mybox") 
         .append($('<a/>', { 
          href: $(this).find("customer_link").text(), 
          target: "_blank", 
          text: $(this).find("customer_company").text() 
         }))); 

在XML中CDATA将会导致jQuery的问题,因为它解析xml就像是html,而不是根据xml规范。如果您无法从customer_company元素中删除CDATA<br>,那么使用像jParse这样的插件解析xml可能会更好。

+0

你的代码将所有链接标签为每个标签。我的意思是当我点击谷歌。它打开http://www.google.comhttp://www.google.com和emc也打开http://www.google.comhttp:// www .google.com – singularity 2011-03-18 15:05:56

+0

@singularity,它似乎为我工作 - 这里是[用jQuery构建的元素的小提琴](http://jsfiddle.net/q6WgG/1/)和[字符串示例的小提琴](http ://jsfiddle.net/NZEuk/) – jball 2011-03-18 15:19:48

+0

@singularity,我注意到我的字符串示例中有一个输入错误,所以它被修复了,我在第二个示例中引用了“customer_link”作为链接文本,所以我更新了当我使用代码的第一个版本时, – jball 2011-03-18 15:21:58

0

有一个在你的代码片段:

$("#guys").append("<div class="mybox">....... 

您要关闭的标签时,你可能穿上”有意要:

试试这个:

$("#guys").append("<div class='mybox'>....... 

你需要更加仔细地考虑了一下,虽然,因为你在你的字符串一些报价单后。

+0

它是如何在jQuery中有所作为的。我知道在Java/C/C++中使用单引号或双引号是可以的 – singularity 2011-03-18 14:59:26

+0

第二个“关闭字符串,因此,有效的是,你可以在可解释的代码中间悬挂一个'mybox' – 2011-03-18 15:20:43

相关问题