По совету кого-то здесь, на Stackoverflow, я изменил свой метод анализа на SAXParser.
Благодаря различным учебным пособиям я могу заставить его работать, и я должен сказать, что он работает быстрее (что очень важно для моего приложения).
Проблема, однако, в том, что мой XML-файл идет глубже, чем XML-пример учебника, который я видел.
Это образец моего XML-файла:
<Message>
<Service>servicename</Service>
<Insurances>
<BreakdownInsurance>
<Name>Insurance name</Name>
<InsuranceNR/>
<LicenseNr/>
</BreakdownInsurance>
<CarDamageInsurance>
<Name>Insurance name 2</Name>
<InsuranceNR></InsuranceNR>
</CarDamageInsurance>
</Insurances>
<Personal>
<Name>my name</Name>
</Personal>
</Message>
Я могу получить личные данные, такие как имя, но мой код не работает со страховками. Я думаю, что это потому, что это на один узел больше.
Это код, который я использую в своем классе Handler:
@Override
public void startElement(String namespaceURI, String localName, String qName, Attributes atts) throws SAXException {
currentElement = true;
if (localName.equals("Message")) {
geg = new GegevensXML();
}
}
@Override
public void endElement(String namespaceURI, String localName, String qName) throws SAXException {
currentElement = false;
/********** Autopech **********/
if (localName.equals("Name")) {
geg.setAutopechMaatschappij(currentValue);
}
else if (localName.equals("InsuranceNR")){
geg.setAutopechPolis(currentValue);
}
else if (localName.equals("LicenseNr")){
geg.setAutopechKenteken(currentValue);
}
@Override
public void characters(char ch[], int start, int length) {
if (currentElement) {
currentValue = new String(ch, start, length);
currentElement = false;
}
Так как мне это настроить?