我可以用jquery解析xml。现在我想要解析的文本是超链接而不是简单的文本。以下是我写的内容。
$(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>
我知道逻辑没有错,我认为这只是a标签的语法错误。有人可以告诉我我在哪里犯了一个错误并指出了一个很好的教程
答案 0 :(得分: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规范。如果您无法从CDATA
元素中删除<br>
和customer_company
,则最好使用jParse这样的插件解析xml。
答案 1 :(得分:0)
查看代码片段:
$("#guys").append("<div class="mybox">.......
当您可能不打算关闭标签时,
试试这个:
$("#guys").append("<div class='mybox'>.......
但是,你需要仔细考虑一下,因为你的字符串后面会有一些引号。