【问题标题】:how to get xml namespace in javascript如何在javascript中获取xml命名空间
【发布时间】:2016-05-30 01:18:13
【问题描述】:

我的xml

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

我通过使用函数getChildText("pcm") 得到值{"message":"test_message"}。但我试图检索命名空间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]

【问题讨论】:

  • 我能够使用 getAttribute 获取命名空间:document.querySelector('test').getAttribute('xmlns') 显示“google:mobile:data”
  • 您使用的是什么 XML 模块?你是如何阅读文件的?向我们展示不起作用的代码。
  • 我正在与xmpp 合作。输出来自stanza,我需要解析它
  • 向我们展示无效的代码。
  • 抱歉耽搁了……@Quentin

标签: javascript xml namespaces


【解决方案1】:

使用标准浏览器的 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 进行了测试,并且可以正常工作。

【讨论】:

  • 我收到了[xmldom error] element parse error: TypeError: source.indexOf is not a function @#[line:0,col:undefined]
【解决方案2】:

我遇到了类似的错误——在我的情况下,这是因为我将字符串以外的东西传递给了“parseFromString”。这可能是问题吗?看起来“stanza”不是字符串。

【讨论】:

    猜你喜欢
    • 2013-05-15
    • 1970-01-01
    • 1970-01-01
    • 2019-07-03
    • 2021-11-03
    • 1970-01-01
    • 2022-11-10
    • 2013-04-20
    • 1970-01-01
    相关资源
    最近更新 更多