我正在尝试使用 JavaScript 从具有属性的 XML 节点检索值。这是一个 XML 片段。
<p:Header>
<p:DocID>
<p:ID>1234</p:ID>
</p:DocID>
<p:QualTerm type="SomeType">
<p:ID schemeName="SomeScheme">5678</p:ID>
</p:QualTerm>
</p:Header>
这是一个 JavaScript 片段。
$.ajax({
type: "GET",
url: "http://localhost:8080/rest/getsomedata",
contentType: "application/x-www-form-urlencoded; charset=UTF-8",
data: id,
dataType: "xml",
cache: false,
success: [
function(data, textStatus, jqXHR) {
var node1 = data.getElementsByTagName("p:Header");
var id = data.getElementsByTagName("p:ID");
for (var outerIndex = 0; outerIndex < node1.outerIndex; index ++) {
for (var innerIndex = 0; innerIndex < id.length; innerIndex ++) {
var tag = data.getElementsByTagName("p:ID")[innerIndex];
var child = tag.childNodes[innerIndex];
var value = child.nodeValue;
alert(value);
}
}
$("#footerMessage").find("span").remove();
$("<span>Success! Data retrieved.</span>").appendTo("#footerMessage");
console.log("Success! Data requested: " + data);
}
]
我可以很好地检索第一个 p:ID 节点的值,但第二次通过内部循环时,我收到具有属性的第二个 p:ID 的“未定义”值。如何从第二个 p:ID 节点提取实际值 5678?提前非常感谢您的帮助。
最佳答案
错误在这一行:
var child = tag.childNodes[innerIndex];
你总是需要获取 <p:ID>
的第一个子节点包含文本 ID 的标签,因此,您始终必须使用以下代码获取它:
var child = tag.childNodes[0];
它适用于第一个元素,因为第一个元素实际上是 0
索引。
关于javascript - 带属性的 XML 节点值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45635155/