2012-08-03 155 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。