【问题标题】:Add a Link to a xml tag and parse it with jquery将链接添加到 xml 标记并使用 jquery 对其进行解析
【发布时间】:2011-07-18 05:51:54
【问题描述】:

我可以用 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 标签的语法错误。有人可以告诉我我在哪里做错了,并指出一个很好的教程

【问题讨论】:

  • 我已经为您编辑了它,但如果您再次发布,建议您花更多时间布置代码。 :-)

标签: xml parsing jquery xml-parsing


【解决方案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 问题,因为它像 html 一样解析 xml,而不是根据 xml 规范。如果您无法从customer_company 元素中删除CDATA&lt;br&gt;,则最好使用jParse 之类的插件解析您的xml。

【讨论】:

  • 您的代码为每个 a 标签放置了所有链接标签。我的意思是当我点击谷歌时。它打开google.comhttp://www.google.com,emc 也打开google.comhttp://www.google.com
  • @singularity,它似乎对我有用 - 这是 fiddle for elements built in jQueryfiddle for the string example
  • @singularity,我注意到我的字符串示例中有一个错字,所以它已修复,我在第二个示例中引用了"customer_link" 作为链接文本,所以我都更新了。
  • 当我使用您的代码的第一个版本时,在参数列表之后,我不断收到错误消息。
  • 实际上我正在使用 ajax 调用来加载我的 xml $(document).ready(function () { $.ajax({ type: "GET", url: "myguys.xml",数据类型:“xml”,成功:myguys }); });
【解决方案2】:

看看你的代码的 sn-p:

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

当您可能无意关闭标签时:

试试这个:

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

不过,您需要仔细考虑一下,因为稍后您的字符串中有一些引号。

【讨论】:

  • 它在 jquery 中有何不同。我知道在 Java/C/C++ 中可以使用单引号或双引号
  • 第二个 " 关闭字符串。所以,实际上你有一个 mybox 挂在可解释代码的中间。
猜你喜欢
  • 2014-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多