- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我无法检查 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/
我知道使用sax时可以验证xml文件。但是我可以在使用Stax时进行验证吗? 最佳答案 SAX和DOM有两种XML验证方式: 单独验证-通过Validator.validate() 在解析期间验证-通
我在类路径中有一个 woodstox 和 java SE 1.6 stax 解析器,但默认情况下似乎选择了 woodstox。 但是在某些情况下,我想使用默认的 Java stax 解析器。有没有办法
我正面临 Woodstox STAX 和 java 1.6 STAX 实现之间奇怪的运行时冲突。由于我使用的是 CXF,它会将 Woodstox jar 作为其依赖项的一部分。这是我正在使用的示例代码
我正在尝试将一些代码从使用 DOM(通过 jDOM)转换为使用 StAX。同时,我正在从基于 DTD 的验证迁移到基于 XSD 的验证。哦,为了更好的衡量,我将 JAXB 引入等式 :) 无论如何,作
我不知道如何提取 XML 文件中的开始标记元素名称。我很接近〜意味着没有错误,我正在获取标签名称,但我正在获取标签名称加上信息。我得到的是: {http://www.publishing.org}au
对于下面发布的 xml 文件,我正在使用 StAX 来处理它。我写了下面的代码,但我不知道为什么尽管 xml 文件中有属性,但没有打印有关属性的信息。我希望控制台显示有关“id”、“lat”和“lon
我正在使用 StAX 来处理巨大的 xml 文件。如下面的代码所示,在 switch-case 中有一个默认条件。当我运行代码时默认情况下的文本打印以下内容: unhandled case4 case
我正在尝试使用 stax 从下面的 xml 中获取父项,请注意,同一结构中可以有多个父项和子项。 PARENT-CODE-1 PARENT-NAME-1
我有一个 xml <RPTSVC role:instanceID="765002" role:roleName="Re
是否有可能/是否有一种简单的方法可以找到与 START_ELEMENT 相对应的结束标记 (END_ELEMENT),如下所示? while(reader.hasNext()){ XM
我有以下(测试)XML 文件和使用 StaX 的 Java 代码。我想将此代码应用于大约 30 GB 大但元素相当小的文件,所以我认为 StaX 是一个不错的选择。我收到以下错误: 线程“main”中
我正在使用 java stax XMLStreamReader 来读取 xml。我想抓取某些内部节点的整个字符串。 XML: 我只想能够
我一直在尝试使用 StAX 创建一个 XML Controller 类。我的问题是我没有得到一个元素的完整字符串,而是得到了字符串的一小部分。 (请注意,出于安全原因,某些内容已被隐藏,这些内容将显示
我使用的是 java 6,rt.jar 具有进行基于 STaX 的解析所需的所有类。我主要使用以下类: import javax.xml.stream.XMLEventReader; import j
我正在使用 STAX 事件 API 读取从 SOAP 调用接收到的二进制数据,并希望将其流式传输给使用者。 SOAP 调用的 XML 有效负载如下所示: ......... PHNvY
我在来自 http://stax.codehaus.org/ 的 vrsion 1.2.0 中使用 StAX Streaming Api .当我尝试将以下 xml 写入文件时,不会转义大于 char
我正在使用以下简单的 StAX 代码循环访问 XML 中的所有标记。尺寸input.xml > 100 MB XMLInputFactory xif = XMLInputFactory.newInst
我正在读取与下面相同的 XML 文件: 我希望下面的代码打印出三个 e在屏幕上: XMLInputFactory factory = XMLInputFact
我有以下代码: XMLInputFactory inputFactory = XMLInputFactory.newInstance(); XMLStreamReader xmlStreamReade
我知道如何利用 java stax iterator api 来读取 xml 文档,但我想了解 XMLEvent 和 XMLEventReader 的实现。 XMLInputFactory xmlIn
我是一名优秀的程序员,十分优秀!