如何为 XML 文档使用子节点?
How to use childNodes for XML document?
我创建了以下 javascript:
<script>
function stats(cod) {
var th = document.getElementsByTagName("th");
var tds = document.getElementsByClassName("pt");
httpRequest = new XMLHttpRequest();
httpRequest.onreadystatechange = function() {
if (httpRequest.readyState == 4 && httpRequest.status == 200) {
var xmlDoc = httpRequest.responseXML.documentElement;
th[0].innerHTML = xmlDoc.getElementsByTagName('name')[0].firstChild.nodeValue;
tds[0].innerHTML = xmlDoc.getElementsByTagName('what')[0].firstChild.nodeValue;
tds[1].innerHTML = xmlDoc.getElementsByTagName('office')[0].firstChild.nodeValue;
tds[2].innerHTML = xmlDoc.getElementsByTagName('www')[0].firstChild.nodeValue;
tds[3].innerHTML = xmlDoc.getElementsByTagName('over')[0].firstChild.nodeValue;
}
}
httpRequest.open("GET","getData.php?codice=" + cod, true);
httpRequest.send(null);
}
</script>
我确信这是阅读 XML 内容并将其值分配给 table TD 的更好方法。我尝试使用 xmlDoc.getElementsByTagName('response').childNodes;
获取 xmlDoc
中包含的所有元素的数组,但结果似乎未定义。
编辑:
这是 XML 的示例:
<response>
<name>The name</name>
<what>What is</what>
<office>The office</office>
<www>The website</www>
<over>Yes</over>
</response>
getElementsByTagName
returns 类似数组的元素集合。
一个特定元素(包括集合中的每个成员)可能有 childNodes
。集合本身不会。
您可以轻松访问 response
元素作为
var response = httpRequest.responseXML.documentElement;
然后我不会尝试使用 childNodes
因为它可以在元素之间包含文本节点,而使用 response.children
会给你子元素,但仅限于现代浏览器。在那种情况下,元素也有一个 textContent
属性 你可以在所有这些 firstChild.nodeValue
访问的情况下使用:
var childElements = response.children;
th[0].innerHTML = childElements[0].textContent;
tds[0].innerHTML = childElements[1].textContent;
...
另一方面,一旦 XML 中元素的顺序发生变化或元素被省略,您将读出错误的数据,因此使用例如response.getElementsByTagName('www')[0].textContent
以名字命名。
我创建了以下 javascript:
<script>
function stats(cod) {
var th = document.getElementsByTagName("th");
var tds = document.getElementsByClassName("pt");
httpRequest = new XMLHttpRequest();
httpRequest.onreadystatechange = function() {
if (httpRequest.readyState == 4 && httpRequest.status == 200) {
var xmlDoc = httpRequest.responseXML.documentElement;
th[0].innerHTML = xmlDoc.getElementsByTagName('name')[0].firstChild.nodeValue;
tds[0].innerHTML = xmlDoc.getElementsByTagName('what')[0].firstChild.nodeValue;
tds[1].innerHTML = xmlDoc.getElementsByTagName('office')[0].firstChild.nodeValue;
tds[2].innerHTML = xmlDoc.getElementsByTagName('www')[0].firstChild.nodeValue;
tds[3].innerHTML = xmlDoc.getElementsByTagName('over')[0].firstChild.nodeValue;
}
}
httpRequest.open("GET","getData.php?codice=" + cod, true);
httpRequest.send(null);
}
</script>
我确信这是阅读 XML 内容并将其值分配给 table TD 的更好方法。我尝试使用 xmlDoc.getElementsByTagName('response').childNodes;
获取 xmlDoc
中包含的所有元素的数组,但结果似乎未定义。
编辑:
这是 XML 的示例:
<response>
<name>The name</name>
<what>What is</what>
<office>The office</office>
<www>The website</www>
<over>Yes</over>
</response>
getElementsByTagName
returns 类似数组的元素集合。
一个特定元素(包括集合中的每个成员)可能有 childNodes
。集合本身不会。
您可以轻松访问 response
元素作为
var response = httpRequest.responseXML.documentElement;
然后我不会尝试使用 childNodes
因为它可以在元素之间包含文本节点,而使用 response.children
会给你子元素,但仅限于现代浏览器。在那种情况下,元素也有一个 textContent
属性 你可以在所有这些 firstChild.nodeValue
访问的情况下使用:
var childElements = response.children;
th[0].innerHTML = childElements[0].textContent;
tds[0].innerHTML = childElements[1].textContent;
...
另一方面,一旦 XML 中元素的顺序发生变化或元素被省略,您将读出错误的数据,因此使用例如response.getElementsByTagName('www')[0].textContent
以名字命名。