При анализе XMl, если XML имеет один родительский тег, то он работает нормально. Если у него несколько родительских тегов, он бросает следующее исключение.IllegalStateException при анализе XML?
java.lang.IllegalStateException: Current state END_ELEMENT is not among the statesCHARACTERS, COMMENT, CDATA, SPACE, ENTITY_REFERENCE, DTD valid for getText()
at com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.getText(Unknown Source)
at com.axxonet.queue.xmlParserValues.parse(xmlParserValues.java:37)
at com.axxonet.queue.xmlParserValues.main(xmlParserValues.java:19)
Если формат XML имеет эту структуру, то он работает нормально.
<Address>
<Name>Rahul</Name>
<ID>2345</ID>
<City>Pune</City>
<Street>Gandhi Nagar</Street>
</Address>
Если значение любого поля равно нулю тег генерировать как <phone/>
Тогда это время при разборе я получаю следующее исключение.
<Address>
<Name>Rahul</Name>
<ID>2345</ID>
<City/>
<Street>Gandhi Nagar</Street>
</Address>
Я попытался добавить IllegalStateException
исключение в блоке catch
еще бросает исключение.
Мой код выглядит следующим образом,
Map<String, String> map = new HashMap<String, String>();
XMLStreamReader xr;
try {
xr = XMLInputFactory.newInstance().createXMLStreamReader(new FileInputStream("E:/Softwares/eclipse/reqOutputFile.xml"));
while(xr.hasNext()) {
int e = xr.next();
if (e == XMLStreamReader.START_ELEMENT) {
String name = xr.getLocalName();
xr.next();
String value = null;
try{
value = xr.getText();
}
catch(IllegalStateException ex)
{
ex.printStackTrace();
}
map.put(name, value);
}
}
} catch (FileNotFoundException e1) {
e1.printStackTrace();
} catch (XMLStreamException e1) {
e1.printStackTrace();
} catch (FactoryConfigurationError e1) {
e1.printStackTrace();
}
Как мы обрабатываем исключение?
Полезно помнить, что правильно сформированный XML должен иметь корневой тег. –
На самом деле я получил вопрос. Это не проблема с родительскими тегами. Я мой xml один подал с нулевым значением, например, Так что по этой причине он бросает исключение. Как я могу его решить? –
Vinod
обновил мой вопрос. Любые sugestions – Vinod