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