java - Java 流式 XML 解析器能否区分空元素和自闭空元素?

标签 java xml xml-parsing

Java 流式 XML 解析器可以吗,即 javax.xml.stream.XMLEventReader区分空元素

<document>
  <empty></empty>
<document>

来自自闭空元素?

<document>
  <empty/>
<document>

假设我们解析上述两个 xml 片段并打印 eventType 和事件本身,就像这样:

System.out.println("eventType:" + event.getEventType() + "; element:"+event.toString());

以上两个片段都会产生完全相同的结果:

eventType:7; element:<?xml version="null" encoding='null' standalone='no'?>
eventType:1; element:<document>
eventType:4; element:   
eventType:1; element:<empty>
eventType:2; element:</empty>
eventType:2; element:</document>
eventType:8; element:ENDDOCUMENT 

只是为了提供一些上下文,我们想要实现的是,我们想要根据一些规则重写xml的某些部分,但想要保留其他部分原样,即我们想要保留空元素以其原始形式,即使这两种形式在语义上是相同的。如果我们有一个普通的空元素(第一个示例),我们希望保持这种方式,如果我们有一个自闭合空元素,我们也希望在结果中写入一个自闭合元素。我们可以通过javax.xml.stream.XMLEventReader来实现这个目标吗? ?

最佳答案

答案是否定的。同样,您不能保留标签内的空格(例如属性值之间的换行符或“=”符号周围的空格)。这些被认为是应用程序不感兴趣的,因此不会报告。

关于java - Java 流式 XML 解析器能否区分空元素和自闭空元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42022648/

相关文章:

Java - 将 JSON 转换为 XML 并保持属性

xml - 将列表框数据保存到 XML?

python - 在 Python 的 For 循环中迭代生成器

java - 如果我使用 golang 编写一个 NoSQL 数据库,但想在其上运行 Hadoop mapreduce,我会遇到什么困难?

java - ToneGenerator 会严重降低应用程序的速度

java - 不关闭 BufferedWriter 的后果是什么

java - 通话录音,通话多个(重复)电话阶段并创建多个音频文件

java - Android 颜色在我的物理设备上不起作用

Google Docs ImportXML 的 XPath 查询

java - 用 SAX 解析 XML |如何处理特殊字符?