[英]Accessing XML node values with JavaScript
我有一個具有以下結構的XML文件:
<FIELDS>
<GRP1>
<OPTION>
<VALUE>71</VALUE>
<CONTENT>Text</CONTENT>
</OPTION>
...
...
</GRP1>
<GRP2>
<OPTION>
<VALUE>77</VALUE>
<CONTENT>Test</CONTENT>
</OPTION>
</GRP2>
...
...
</FIELDS>
我需要獲取以<GRP1>
作為父節點的<OPTIONS>
所有子節點的節點值。 我嘗試了以下代碼,但沒有成功:
// [...]
var xmlGRP = xmlDoc.getElementsByTagName(GRP1);
xmlvalue = xmlGRP.childNodes[0].childNodes[0].firstChild.nodeValue;
xmlcontent = xmlGRP.childNodes[0].childNodes[1].firstChild.nodeValue;
誰能告訴我我的代碼有什么問題嗎?
除非您定義了一個名為GRP1
的變量,否則應為字符串'GRP1'
。
xmlGRP
直接是NodeList,而不是Node; 您無需查看其上的childNodes
屬性。
由於在空格處理方面可能存在差異,因此訪問編號的childNodes
不可靠。
對於空字符串,訪問firstChild
將會失敗,因為該元素將沒有Text節點子級。
嘗試類似:
var grp1 = xmlDoc.getElementsByTagName('GRP1')[0];
var firstOption = grp1.getElementsByTagName('OPTION')[0];
var value = firstOption.getElementsByTagName('VALUE')[0].textContent;
var content = firstOption.getElementsByTagName('CONTENT')[0].textContent;
(請注意, textContent
是IE 8及以下版本不支持的DOM Level 3核心屬性。如果需要支持該瀏覽器,則可以使用類似的方法,例如:)
function getTextContent(node) { // not 100% DOM3 compliant... good enough
if ('textContent' in node)
return node.textContent;
var texts = [];
for (child = node.firstChild; child!==null; child = child.nextSibling) {
if (child.nodeType===1) // ELEMENT_NODE
texts.push(getTextContent(child));
else if (child.nodeType===3 || child.nodeType===4) // TEXT_NODE, CDATA_SECTION_NODE
texts.push(child.data);
}
return texts.join('');
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.