如何在 JavaScript 中获取 XML 命名空间

how to get xml namespace in javascript

本文关键字:获取 XML 命名空间 JavaScript      更新时间:2023-09-26

我的xml

<message to="to_test" from="from_test">
    <test xmlns="google:mobile:data">
        {"message":"test_message"}
    </test>
</message>

我通过使用函数getChildText("pcm")获取值{"message":"test_message"}。但我试图检索命名空间xmlns值。

我尝试了以下如何获取XML命名空间?,如何在SQL Server的XQuery中获取特定的XML命名空间,但没有运气,它向我展示了我做错is not function error什么?

忘了提,我目前正在盯着node.js的工作。

更新

上面的 XML 输出是 xmpp stanza

在这里,我使用以下方法获取attrs

stanza.attrs.to给了我to_test.

stanza.attrs.from给了我from_test.

stanza.getChildText("test")给了我{"message":"test_message"}

我试图xmlns使用

    var parser = new DOMParser();
    var documents = parser.parseFromString(stanza, 'text/xml');
    var response = documents.responseXML.getElementsByTagName("test");
    var sunrise = response[0].getElementsByTagNameNS("[Namespace URI]", "test")[0].getAttribute("xmlns");
    console.log(sunrise);

在这里我得到了

[xmldom error]  element parse error: TypeError: source.indexOf is not a function @#[line:0,col:undefined]

使用标准浏览器的 DOM 解析器,您可以执行以下操作:

var txt = "<message><test xmlns='"google:mobile:data'"> {'"message'":'"test_message'"}</test></message>";
parser = new DOMParser();
xmlDoc = parser.parseFromString(txt,"text/xml");
ns = xmlDoc.getElementsByTagName("test")[0].namespaceURI

我已经用Chrome和IE测试过,它可以工作。

我遇到了类似的错误 - 就我而言,这是因为我将字符串以外的内容传递给"parseFromString"。这可能是问题所在吗?看起来"节"不是字符串。