javascript - 带属性的 XML 节点值

标签 javascript xml

我正在尝试使用 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/

相关文章:

javascript - 如何让 Firefox 控制台显示超过 200 个日志条目?

javascript - 通过scrapy python中的javascript与splash实现下一页?

javascript - 带有嵌套 Promise 的函数式编程

javascript - 如何在Ext js 4.1中过滤数组json

javascript - JSTree 获取普通 XML 数据

c# - 从 xpath 创建 SQL 数据库结构

javascript - 我们如何为网页实现可重用的焦点管理器

java - Veracode XML 外部实体引用 (XXE) 解码 org.w3c.dom.Element

c# - 如何根据多个父元素的属性删除子元素?

c# - 在属性中定义 schemaLocation