У меня есть XML-файл, который я читаю с помощью Stax API.Он отлично работает для отдельных элементов <Branch>
и <Currency>
.Он также отлично работает для уникального дочернего элемента <AccountId>
.Моя проблема заключается в том, что внутри родительских элементов <advisory>
, <Fixed>
и <Threat>
существуют дублированные дочерние элементы, т.е. <name>
.Как извлечь элемент <name>
из родительского элемента <Fixed>
<Branch>XXXXX</Branch>
<Currency>XXXXXXX</Currency>
<Account>
<accountID>XXXXXXXX</accountID>
</Account>
<Advisory>
<name>XXXXXXXXXX</name>
<testDescription>XXXXXXXXXXXX</testDescription>
</Advisory>
<Fixed>
<name>XXXXXXXXXX</name>
<root>XXXXXXXXXX</root>
</Fixed>
<Threat>
<name>XXXXXXXXXXX</name>
<reference>XXXXXXXXXXXXXXXX</reference>
</Threat>
Ниже приведен мой код для анализатора Stax: -
public static void parseXmlData(String xmlData) {
String tagContent = null;
XMLStreamReader reader = XMLInputFactory.newInstance()
.createXMLStreamReader(new ByteArrayInputStream(xmlData.getBytes()));
while (reader.hasNext()) {
int event = reader.next();
switch(event) {
case XMLStreamConstants.START_ELEMENT:
break;
case XMLStreamConstants.CHARACTERS:
tagContent = reader.getText().trim();
break;
case XMLStreamConstants.END_ELEMENT:
switch (reader.getLocalName()) {
case "Branch":
System.out.println(tagContent);
break;
case "Currency":
System.out.println(tagContent);
break;
case "accountID":
System.out.println(tagContent);
break;
case "name":
System.out.println(tagContent);
break;
default:
System.out.println("Discarded:",reader.getLocalName());
break;
}
break;
default:
System.out.println("Discarded", event);
break;
}}}
Пожалуйста, предоставьте мне решение, как я могу использовать Stax Parser для выборочного извлечения данных из элемента <name>
, присутствующего под родительским элементом <Fixed>