如何使用getElementsByTagName获取限定标记名称

时间:2014-06-26 14:09:41

标签: javascript

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

2 个答案:

答案 0 :(得分:2)

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

要仅获取smpte命名空间中的xmlDoc.getElementsByTagNameNS(smpteNamespaceUri, 'image'); 代码,您应该使用getElementsByTagNameNS

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]


例如:

{{1}}

答案 1 :(得分:1)

冒号将名称空间标记名称分开。即smpte:不是标记名称的一部分。 我想你正在寻找getElementsByTagNameNS

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