У меня есть xml как
<?xml version="1.0" encoding="UTF-8"?>
<Batch checksum="4f4e96dc724aa38965a75121b654a49830fc6a46f927f1b1803cdd22a40f1e27">
<UpdateCache incremental="false" cleanCache="true">
<PayLoad>
<ConfigurationChangeSet />
<CacheContent Type="ReportingServices" Name="ReportingServices-conf.xml" Path="roles/ReportingServices" EntryName="ReportingServices" EntryId="175">
<RPTSVC role:instanceID="765002" role:roleName="ReportingServices" role:Identity="175">
<SSRSServerDetails>
<SSRS_PORT>29283</SSRS_PORT>
<SSRS_SSL_PORT>29284</SSRS_SSL_PORT>
</CacheContent>
</PayLoad>
</UpdateCache>
Я работаю над проектом, который использует stax, чтобы объединить содержимое тега в отдельный файл.Проблема заключается в том, что синтаксический анализатор stax может удалить «<» только при обнаружении <, а затем сообщить об этом как о готовом. </p>
Вот код, который я использую:
while(reader.hasNext()){
XMLEvent event = reader.nextEvent();
if(event.isStartElement()){
StartElement startElement = event.asStartElement();
if(startElement.getName().getLocalPart().equals("CacheContent")){
XMLEvent cacheContentXmlEvent = reader.peek();
if(cacheContentXmlEvent.isCharacters()){
Characters cacheContentXmlText = cacheContentXmlEvent.asCharacters();
System.out.println(String.format("Cache Content ==> %s " , cacheContentXmlText.getData())) ;
}
}
}
}
Что я делаю неправильно?Спасибо за вашу помощь.
Вот новый код (еще может быть без ошибок)
while(reader.hasNext()){
XMLEvent event = reader.nextEvent();
if(event.isStartElement()){
StartElement startElement = event.asStartElement();
if(startElement.getName().getLocalPart().equals("CacheContent")){
XMLEvent cacheContentXmlEvent = reader.peek();
if(cacheContentXmlEvent.isCharacters()){
StringBuilder stringBuilder = new StringBuilder();
while(reader.hasNext()){
XMLEvent xmlCharEvent = reader.nextEvent();
if(xmlCharEvent.isCharacters()){
stringBuilder.append(xmlCharEvent.asCharacters().getData());
}
if(reader.peek().isCharacters()){
continue;
}else{
break;
}
}
System.out.println(stringBuilder.toString());
}
}
}
}