如何在javascript中获取xml命名空间

时间:2016-02-18 02:49:48

标签: javascript xml namespaces

我的xml

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

我使用函数{"message":"test_message"}得到值getChildText("pcm")。但我试图检索名称空间xmlns值。

我尝试了以下How to get XML namespace?How to get specific XML namespace in XQuery in SQL Server没有运气,它向我显示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]

2 个答案:

答案 0 :(得分:3)

使用标准浏览器的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进行了测试,但它确实有效。

答案 1 :(得分:1)

我遇到了类似的错误 - 在我的情况下,这是因为我已将除字符串之外的内容传递给“parseFromString”。这可能是问题吗?看起来“节”不是一个字符串。