我的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]
答案 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”。这可能是问题吗?看起来“节”不是一个字符串。