gpt4 book ai didi

java - 无法使用 Stax 中的 XMLEventReader 检查 XML 中的 CDATA

转载 作者:行者123 更新时间:2023-11-30 06:58:31 26 4
gpt4 key购买 nike

我无法检查 XML 中的 CDATA 并使用 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如下:

 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() 为 false。想知道如何在 EventReader 中检查 CDATA 并获取 CDATA。

最佳答案

使用以下模式:

  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

 <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)

关于java - 无法使用 Stax 中的 XMLEventReader 检查 XML 中的 CDATA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41365068/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com