0
我有一个XML作为StAX的读取错误事件阅读
<?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解析器只能在遇到<时剥离'<',然后将其报告为完成。
这里是代码我使用:
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())) ;
}
}
}
}
我在做什么错?谢谢你的帮助。
下面是新的代码(可能不无bug还)
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());
}
}
}
}