我想从xml中每个目标标记名称中获取值,但getElementsByTagName
如果包含特殊字符(如“ :
”),则似乎无法找到标记名称。有什么解决办法吗?我尝试了“ xx\:creator
”和“ xx%3Acreator
”,但它们似乎都无法正常工作。下面是我的一部分代码。
promise.then(function (response) {
var parser = new DOMParser();
var xml = parser.parseFromString(response, "text/xml");
// Get all 'item' tag
var items = xml.getElementsByTagName("item");
for (var i = 0; i < items.length; i++) {
title = items[i].getElementsByTagName("title")[0].innerHTML;
link = items[i].getElementsByTagName("link")[0].innerHTML;
pubDate = items[i].getElementsByTagName("pubDate")[0].innerHTML;
creator = items[i].getElementsByTagName("xx:creator")[0].innerHTML;
// Output: undefined
console.log(items[i].getElementsByTagName("xx:creator")[0]);
}
});
您需要使用getElementsByTagNameNS
,其中包括名称空间参数。您没有显示XML,所以我无法推断出正确的名称空间来完全解决您的问题。
// check the alignment on a number of cells in a table in an XHTML document.
var table = document.getElementById("forecast-table");
var cells = table.getElementsByTagNameNS("http://www.w3.org/1999/xhtml", "td");
for (var i = 0; i < cells.length; i++) {
var axis = cells[i].getAttribute("axis");
if (axis == "year") {
// grab the data
}
}
这是一个与上面的代码一起使用的名称空间示例。下面的名称空间定义将前缀映射h:
到namespace http://www.w3.org/1999/xhtml
。
<root>
<h:table xmlns:h="http://www.w3.org/1999/xhtml">
<h:tr>
<h:td>Apples</h:td>
<h:td>Bananas</h:td>
</h:tr>
</h:table>
</root>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句