如何在 XML 中获取 "xx:creator" 值?

How do I get "xx:creator" value in XML?

我想从 xml 中的每个目标标签名称中获取值,但似乎“getElementsByTagName”如果包含“[=14=”等特殊字符,则无法找到标签名称]”。有什么解决办法吗?我尝试了“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: 映射到命名空间 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>