2012-03-02 69 views
1

对于每个链接,例如用XML文档中的内容更新链接文本

<a href="http://www.wowhead.com/item=78363">http://www.wowhead.com/item=78363</a> 

我想检索URL末尾的href属性中的ID。例如,78363,如上所示。使用这个ID,我想检索一个XML页面并根据ID从它获取数据。 XML文档的URL相同的链接项目,但&xml结束,所以:

http://www.wowhead.com/item=78363&xml 

从XML页面,我需要如下所示的CDATA段内的值:

<name> 
<![CDATA[Vagaries of Time]]> 
</name> 

也就是“时间的迷失”。然后我需要在标签内插入名称:

<a href="http://www.wowhead.com/item=78363">Vagaries of Time</a> 

我该如何做到这一点?

+0

AGH!我的眼睛!请继续格式化为标准级别,谢谢。 – Ryan 2012-03-02 23:24:50

+0

对不起,我的英文不好,反正谢谢编辑。 – Edoras 2012-03-02 23:36:32

+0

还是其他一些想法?也许在xml页面和脚本之间用代码粘贴一个php文件,然后会根据脚本的请求获取数据? '/get_xml.php?ID = 78363'?等等。 – Edoras 2012-03-03 00:19:01

回答

0

根据正则表达式遍历链接,发送Ajax请求,使用正则表达式解析文本并完成。

$('a').each(function() { 
    var $this = $(this); 

    if(/item=\d+$/.test(this.href)) { 
     $.ajax({ 
      url: this.href + '&xml', 
      dataType: 'text', 
      success: function(data) { 
       $this.text(/<!\[CDATA\[([^\]]+)/.exec(data)[1]); 
      } 
     }); 
    } 
}); 

当然,你很可能想要添加一些错误检查。另外,如果您的XML文档比您发布的示例更复杂,请考虑使用原生XML功能进行解析 - 我只是为了简单起见而使用了正则表达式。

+0

XML页面是实时的:http://www.wowhead.com/item=78363&xml(我们从中获取数据的站点不是我的)。 – Edoras 2012-03-02 23:45:05

+0

在此XML页面上有更多选项CDATA: -/ – Edoras 2012-03-02 23:45:44

+0

@Edoras:好的,您需要用自己的服务器代理页面;跨源策略不会让您直接通过Ajax向其发送请求。至于其他CDATA,你需要的是第一个,所以没问题。 – Ryan 2012-03-02 23:47:03