【发布时间】:2015-11-18 05:13:21
【问题描述】:
我知道这很容易,我整天都在敲我的头。我有一个这样的 XML 文档:
<WMS_Capabilities version="1.3.0" xmlns="http://www.opengis.net/wms">
<Service>
<Name>WMS</Name>
<Title>Metacarta WMS VMaplv0</Title>
</Service>
<Capability>
<Layer>
<Name>Vmap0</Name>
<Title>Metacarta WMS VMaplv0</Title>
<Abstract>Vmap0</Abstract>
...
可以有多个Layer节点,任何Layer节点都可以有嵌套的Layer节点。我可以快速选择所有层节点并使用以下 xpath 代码遍历它们:
Map<String, String> uris = new HashMap<String, String>();
uris.put("wms", "http://www.opengis.net/wms");
XPath xpath1 = doc.createXPath("//wms:Layer");
xpath1.setNamespaceURIs(uris);
List nodes1 = xpath1.selectNodes(doc);
for (Iterator<?> layerIt = nodes1.iterator(); layerIt.hasNext();) {
Node node = (Node) layerIt.next();
}
我取回所有图层节点。完美的。但是当我尝试访问每个 Name 或 Title 子节点时,我什么也得不到。我尝试了尽可能多的各种组合:
name = node.selectSingleNode("./wms:Name");
name = node.selectSingleNode("wms:Name");
name = node.selectSingleNode("Name");
etc 等,但它总是返回 null。我猜它与命名空间有关,但我所追求的只是我获得的每个图层节点的名称和标题文本值。任何人都可以提供任何帮助:
【问题讨论】:
-
试试
node.selectSingleNode("*:Name")。