Я знаю, что это так просто, и я провел весь день, стуча головой. У меня есть такой 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();
}
Я возвращаю все узлы Layer. Идеальный. Но когда я пытаюсь получить доступ к каждому дочернему узлу Name или Title, я ничего не получаю. Я пробовал столько различных комбинаций, о которых только мог подумать:
name = node.selectSingleNode("./wms:Name");
name = node.selectSingleNode("wms:Name");
name = node.selectSingleNode("Name");
и т. д. и т. д., но всегда возвращает ноль. Я предполагаю, что это как-то связано с пространством имен, но все, что мне нужно, это текстовые значения имени и заголовка для каждого из полученных мной узлов слоя. Может ли кто-нибудь предложить какую-либо помощь:
node.selectSingleNode("*:Name")
. - person Priyesh   schedule 03.04.2014