【问题标题】:How to use XML Parser and get element by tagName when tag contains embedded element inside?标签包含嵌入元素时,如何使用 XML Parser 并通过 tagName 获取元素?
【发布时间】:2017-05-22 09:15:05
【问题描述】:

我正在使用 XMLParser 从标签中获取数据。

这个标签是这样的:

<tagName elem="XXX"></tagName>

我想得到:XXX

根据文档,我正在这样做:

    parseMyXML = new DOMParser();
    xmlDoc = parseMyXML.parseFromString(contentXML,"text/xml");

    var code_XXX = xmlDoc.getElementsByTagName("tagName")[0].childNodes[0].nodeValue;

我有一个错误:Uncaught (in promise) TypeError: Cannot read property 'nodeValue' of undefined

我需要进入tagName并获取elem的包含

【问题讨论】:

  • 尝试将 mime 类型更改为“application/xml”
  • @Eytibi — 为什么?这会有什么不同?
  • 没关系。这只是一个猜测,因为您总是可以在文档中找到“aplication/xml”。

标签: javascript html xml xml-parsing


【解决方案1】:

这是一个属性而不是子节点。

xmlDoc.getElementsByTagName("tagName")[0].getAttribute("elem");

【讨论】:

    【解决方案2】:

    使用 jQuery 你可以做这样的事情。

        var $xml = $.parseXML(xml),
           value = $xml.find('tagName').text();
    

    如果你使用的是纯 JS,你应该像这样解析 xml。

    if (window.DOMParser) {
      // code for modern browsers
      parser = new DOMParser();
      xmlDoc = parser.parseFromString(text,"text/xml");
    } else {
      // code for old IE browsers
    xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
      xmlDoc.async = false;
      xmlDoc.loadXML(text); 
    } 
    

    【讨论】:

    • 他们没有使用 jQuery,他们试图阅读的内容不是元素内的文本。
    • @Quentin 是的,但我建议的方式,如果他愿意,我可以举一个简单的例子。如果他不想要文本,他可以删除该部分。
    • 这个问题告诉你 OP 想要什么。这不是你解释如何获得的。您需要回答实际问题。
    • 让他决定,他想要什么,如果他需要更多解释,他会问。当他正在处理这个问题时,他可以更好地问你。
    • “让他决定,他想要什么”——他们做到了。他们告诉我们他们想要的问题。他们想要值 XXX,它是元素 属性 的值。它不是元素内的文本。元素内没有任何文本。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-30
    • 2015-12-20
    • 2021-02-08
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    相关资源
    最近更新 更多