2012-08-03 121 views
0

我有一个XML对象,我想返回可能有一些子节点的节点上的文本值。Javascript和xml解析

<binding name="s"><bnode>b1fff4d00000000fe</bnode></binding> 
    <binding name="p"><uri>http://cidoc-crm.org/P1F.is_identified_by</uri></binding> 
    <binding name="zebra"><literal>copper</literal></binding> 

在上述情况下,我想要返回每个节点中的文本我可以指定绑定的名称值。

伪代码: 获取文本绑定名称的值==“s”;

我已经试过这

x[i].getElementsByTagName("binding")[0].childNodes[0].nodeValue 

所以它不应该不管什么子节点的名字是在这种情况下,B节点。

我希望那个清楚

谢谢。

+1

SUDO!你的意思是假,对。 – bugwheels94 2012-08-03 09:29:40

+0

哎呀是的,我的意思是假的。 – Sagarmichael 2012-08-03 09:31:24

+0

目前我正在尝试这样做。 x [i] .getElementsByTagName(“binding”)[0] .childNodes [0] .nodeValue – Sagarmichael 2012-08-03 09:32:14

回答

2

来获取文本内容将

x[i].getElementsByTagName("binding")[0].textContent; 

但是最简单的方式,textContent在IE < 9不支持的,所以你需要通过这些浏览器导航到文本节点:

x[i].getElementsByTagName("binding")[0].firstChild.firstChild.data; 

演示:http://jsfiddle.net/p2SrZ/

+0

还是这个......完全想到它......真的。 +1 – 2012-08-03 09:55:05

+0

谢谢,下一个问题只需要解决如何返回绑定名称值。 – Sagarmichael 2012-08-03 09:56:10

+0

@Sagarmichael:你什么意思? ''元素中'name'属性的值? – 2012-08-03 09:57:18

1

您正在尝试获取元素的nodeValue方式导致null[1]你想要的是包含文本节点的nodeValue。因此,你必须到另一层遗憾的是到这个声明,您的发言成为

x[i].getElementsByTagName("binding")[0].childNodes[0].childNodes[0].nodeValue; 

这将拉动内部元素的文本节点值。

[1]假引证只需点击链接dang it。