[英]Why doesn't XMLDocument.evaluate find nodes in this WMS GetCapabilities document
我正在尝试解析此XML文档中的信息 。
下面的JavaScript适用于简单的XML测试文档,但是我找不到XPath可以返回真实文档中的任何节点。
他的想法只是列出WMS GetCapabilities XMl文档中的所有“层”节点。
我究竟做错了什么?
谢谢,下面的代码。
<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>
我认为您需要学习如何考虑默认名称空间,使用evaluate
函数的第三个参数来映射前缀,您可以自由选择名称空间,例如Layer
或Title
元素所在的元素,并在其中使用该前缀您的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();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.