XML parentnode属性未被识别,不能与xPath一起工作



我对XML和JS很陌生,所以如果问题微不足道,请原谅我。我正在尝试做的是解析XML并收集标记为值"name"的所有节点。之后,我想把它们放在一个表中(我还没有开发表部分)。下面是解析后的XML的节选:

<?xml version="1.0" encoding="UTF-8"?>
<model-data>
<identification>
<date>Thu Dec 15 14:43:07 CET 2022</date>
<xml-version>4.11</xml-version>
</identification>
<model>
<named-domains>
<named-domain>
<name>boolean</name>
<elements>
<element>
<value>0</value>
<name>No</name>
<description>No</description>
</element>
<element>
<value>1</value>
<name>Yes</name>
<description>Yes</description>
</element>
</elements>
</named-domain>
<named-domain>
<name>D_NOME_TECNICO_COMPLETO</name>
<elements>
<element>
<value>0</value>
<name>PippoBaudo</name>
<description>Superstar</description>
</element>
... // same pattern
</elements>
</named-domain>
</named-domains>
</model>
</model-data>

这里是JS代码:

<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function () {
if (this.readyState == 4 && this.status == 200) {
showResult(xhttp.responseXML);
}
};
xhttp.open("GET", "prova.xml", true);
xhttp.send();
function showResult(xml) {
var txt = "";
// path = "//named-domain/name[text()]";
path = "/model-data/model/named-domains//name[text()]";
if (xml.evaluate) {
var nodes = xml.evaluate(path, xml, null, XPathResult.ORDERED_NODE_ITERATOR_TYPE, null);
var result = nodes.iterateNext();
while (result) {
txt += "<b>" + result.childNodes[0].nodeValue + "</b><br>";
result = nodes.iterateNext();
parente = nodes.parentnode.nodevalue; // <- Here something goes wrong!
}
// Code For Internet Explorer
} else if (window.ActiveXObject || xhttp.responseType == "msxml-document") {
xml.setProperty("SelectionLanguage", "XPath");
nodes = xml.selectNodes(path);
for (i = 0; i < nodes.length; i++) {
txt += nodes[i].childNodes[0].nodeValue + "<br>";
}
}
document.getElementById("demo").innerHTML = txt;
}
</script>
</body>
</html>

我需要拦截值为"named-domain"的节点的子节点并以某种方式对待他们。我试图用"parente = nodes.parentnode.nodevalue"但是:

  1. VS code不建议我使用元素"nodes"的属性parentnode,我不明白为什么;
  2. 如果我手动*强制*属性,我收到以下错误:"Uncaught TypeError: Cannot read properties of undefined (reading 'nodeValue')"再次:为什么?

有人可以帮我吗?

谢谢

parentNode,不是parentnodenodeValue在DOM中没有给元素节点任何有意义的东西。

最新更新