【问题标题】:How to get qualified tag name using getElementsByTagName [duplicate]如何使用 getElementsByTagName [重复] 获取合格的标签名称
【发布时间】:2014-08-17 10:33:36
【问题描述】:

我正在尝试使用 DOMParser 解析 XML,我可以使用 getElementsByTagName 获取具有简单标记名称的元素,但如果我尝试获取具有标记名称 smpte:image 的元素,则返回的数组为空。 有没有办法逃脱结肠?我尝试了xmlDoc.getElementsByTagName('smpte\\:image'),但结果相同。 谢谢

【问题讨论】:

标签: javascript


【解决方案1】:

命名空间是一个单独的实体,不是标签名称的一部分。您可以通过调用 xmlDoc.getElementsByTagName('image') 来查看这一点,这将返回您的命名空间标签。

要仅获取smpte 命名空间中的image 标签,您应该使用getElementsByTagNameNS

xmlDoc.getElementsByTagNameNS(smpteNamespaceUri, 'image');


示例:

var xml = '<doc xmlns:smpte="http://example.com/xmlns/smpte"><smpte:image></smpte/image></doc>',
    parser = new DOMParser(),
    doc = parser.parseFromString(xml, 'application/xml');

console.log(doc.getElementsByTagNameNS('http://example.com/xmlns/smpte', 'image'));
// -> [smpte:image]

console.log(doc.getElementsByTagName('image'));
// -> [smpte:image]

【讨论】:

    【解决方案2】:

    冒号将命名空间标签名分开。 IE。 smpte: 不是标签名称的一部分。 我猜你在找getElementsByTagNameNS:

    var ns = '<namespace URI>';
    var images = xmlDoc.getElementsByTagNameNS(ns, 'image');
    

    【讨论】:

      猜你喜欢
      • 2014-07-14
      • 2012-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-13
      • 2017-04-23
      • 2018-03-29
      • 2021-08-14
      相关资源
      最近更新 更多