【发布时间】:2017-02-03 10:58:28
【问题描述】:
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 xml xml-parsing