gpt4 book ai didi

javascript - 为什么 XMLDocument.evaluate 在此 WMS GetCapability 文档中找不到节点

转载 作者:行者123 更新时间:2023-12-02 23:02:50 34 4
gpt4 key购买 nike

我正在尝试解析此 XML Document 中的信息.

下面的 JavaScript 适用于简单的 XML 测试文档,但我找不到将从真实文档返回任何节点的 XPath。

他的想法只是列出 WMS GetCapativity XMl 文档中的所有“Layer”节点。

我做错了什么?

谢谢,下面的代码。

<html>
<body>
<script>
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
parser = new DOMParser();
xmlDoc = parser.parseFromString(xhttp.responseText, "text/xml");
var iterator = xmlDoc.evaluate('Layer', xmlDoc.documentElement, null, XPathResult.UNORDERED_NODE_ITERATOR_TYPE, null);
var thisNode = iterator.iterateNext();
while (thisNode) {
documemnt.console.log(thisNode.textContent);
thisNode = iterator.iterateNext();
}
}
};
xhttp.open("GET", "https://geo.weather.gc.ca/geomet?service=WMS&request=GetCapabilities", true);
xhttp.send();
</script>
</body>

</html>

最佳答案

我认为您需要学习如何考虑默认 namespace ,使用evaluate函数的第三个参数来映射您可以自由选择的前缀到 namespace 的元素,例如 >LayerTitle 元素位于 XPath 表达式中并使用该前缀:

var req = new XMLHttpRequest();
req.open('GET', 'https://geo.weather.gc.ca/geomet?service=WMS&request=GetCapabilities');
req.onload = function() {
var doc = this.responseXML;

var namespaces = { wms: 'http://www.opengis.net/wms' };

var result = doc.evaluate(
'/wms:WMS_Capabilities/wms:Capability//wms:Layer/wms:Title',
doc,
function(prefix) { return namespaces[prefix]; },
XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,
null);

var ol = document.createElement('ol');

for (var i = 0; i < result.snapshotLength; i++) {
var li = document.createElement('li');
li.textContent = result.snapshotItem(i).textContent;
ol.appendChild(li);
}

document.body.appendChild(ol);

};
req.send();

关于javascript - 为什么 XMLDocument.evaluate 在此 WMS GetCapability 文档中找不到节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57713970/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com