В настоящее время я работаю над анализом XML-файлов в Java с использованием DOM. Но я столкнулся с проблемой, связанной с извлечением конкретного содержимого тега из файла XML, если в другом теге есть другие теги с тем же именем, что и в следующем сценарии:
<file>
<sub-file>
<a> ....</a>
<b> ....</b>
<c> ....</c>
</sub-file>
<a> ..... some data here ....</a>
<b> ..... some data here ....</b>
<c> ..... some data here ....</c>
<image>
<a> ....</a>
<b> ....</b>
<c> ....</c>
</image>
</file>
Итак, как я могу извлечь теги a, b, c, которые не находятся внутри другого (внутри вложенного файла или изображения)? Я пробовал пока этот код:
File xmlfile=new File(path);
factory = DocumentBuilderFactory.newInstance();
builder= factory.newDocumentBuilder();
document= builder.parse(xmlfile);
document.getDocumentElement().normalize();
filelist= document.getElementsByTagName("file");
for(int o=0;o<filelist.getLength();o++)
{
Node nNode = filelist.item(o);
if (nNode.getNodeType() == Node.ELEMENT_NODE)
{
Element element = (Element) nNode;
for (int a=0; a<element.getElementsByTagName("file").getLength(); a++)
{
tagA=element.getElementsByTagName("a").item(a).getTextContent();
tagB=element.getElementsByTagName("b").item(a).getTextContent();
tagC=element.getElementsByTagName("c").item(a).getTextContent();
}
}
}// loop
}
Этот код печатает все теги a, b, c 3 раза (внутри файла, вложенного файла и изображения).