У меня есть XML-файл следующей структуры:
<?xml version="1.0" encoding="utf-8"?>
<root>
<ArrayOfLocationDTO xmlns:xsi="foo1" xmlns:xsd="foo2" xmlns="foo3">
<LocationDTO ~some data~>~child nodes etc~</LocationDTO>
<LocationDTO ~some data~>~child nodes etc~</LocationDTO>
... ... ...
<LocationDTO ~some data~>~child nodes etc~</LocationDTO>
<LocationDTO ~some data~>~child nodes etc~</LocationDTO>
</ArrayOfLocationDTO>
</root>
Я пытаюсь получить оттуда все «LocationDTO».Мой код выглядит так:
XPath xpath = XPathFactory.newInstance().newXPath();
DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
builderFactory.setNamespaceAware(true);
DocumentBuilder builder = builderFactory.newDocumentBuilder();
File XMLPath=new File(Environment.getExternalStorageDirectory(), "XMLSource.xml");
Document document = builder.parse(XMLPath);
NodeList nodes = (NodeList) xpath.evaluate("//LocationDTO", document, XPathConstants.NODESET);
int count=nodes.getLength();
Моя проблема в том, что код ничего не находит, если я не удаляю ArrayOfLocationDTO вручную из источника XML.Почему ArrayOfLocationDTO мешает моему коду работать должным образом и как я могу заставить его работать без программного удаления ArrayOfLocationDTO (я считаю последний своего рода «грязным решением»)?