无法使用Stax中的XMLEventReader检查XML中的CDATA [英] Unable to check CDATA in XML using XMLEventReader in Stax
本文介绍了无法使用Stax中的XMLEventReader检查XML中的CDATA的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我无法检查XML中的CDATA并使用XMLEventReader读取它。
I am unable to check for CDATA in XML and read it using XMLEventReader.
以下是示例:
<name>HEADERS</name>
<data>
<![CDATA[ Sat Nov 19 18:50:15 2016 (1672822)
]]>
<![CDATA[Sat, 19 Nov 2016 18:50:14 -0800 (PST)
]]>
</data>
我使用的Stax api的XMLEventReader如下:
The XMLEventReader of Stax api which i am using is as follows:
while (eventReader.hasNext()) {
XMLEvent event = eventReader.nextEvent();
if (event.isCharacters()) {
System.out.println(event.asCharacters().isCData());
System.out.println(event.asCharacters().getData());
}
}
因此,当我读取字符的数据标记时,我为event.asCharacters()。isCData()得到了假。想知道如何在EventReader中检查CDATA并获取CDATA。
So,when I read the data tag for characters, I get false for event.asCharacters().isCData(). Would like to know how to check for CDATA in EventReader and get the CDATA as well.
推荐答案
使用以下模式:
switch (EventType) {
case XMLStreamConstants.CHARACTERS:
case XMLStreamConstants.CDATA:
System.out.println(r.getText());
break;
default:
break;
}
完成样本:
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.InputStream;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamConstants;
import javax.xml.stream.XMLStreamReader;
public void readCDATAFromXMLUsingStax() {
String yourSampleFile = "/path/toYour/sample/file.xml";
XMLStreamReader r = null;
try (InputStream in =
new BufferedInputStream(new FileInputStream(yourSampleFile));) {
XMLInputFactory factory = XMLInputFactory.newInstance();
r = factory.createXMLStreamReader(in);
while (r.hasNext()) {
switch (r.getEventType()) {
case XMLStreamConstants.CHARACTERS:
case XMLStreamConstants.CDATA:
System.out.println(r.getText());
break;
default:
break;
}
r.next();
}
} catch (Exception e) {
throw new RuntimeException(e);
} finally {
if (r != null) {
try {
r.close();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
}
随着/path/toYour/sample/file.xml
With /path/toYour/sample/file.xml
<data>
<![CDATA[ Sat Nov 19 18:50:15 2016 (1672822)]]>
<![CDATA[Sat, 19 Nov 2016 18:50:14 -0800 (PST)]]>
</data>
给予:
Sat Nov 19 18:50:15 2016 (1672822)
Sat, 19 Nov 2016 18:50:14 -0800 (PST)
这篇关于无法使用Stax中的XMLEventReader检查XML中的CDATA的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文