我有以下元素声明:
<xs:element name="period" type="xs:unsignedInt" default="20"/>
我按如下方式使用它:
<period/>
以某种方式预期:
XMLEvent event = eventReader.nextEvent();
if (event.isStartElement()) {
StartElement startElement = event.asStartElement();
switch (startElement.getName().getLocalPart()) {
case "period":
int period = Integer.parseInt(eventReader.nextEvent().asCharacters().getData())
// do something with period
default:
}
}
抛出
Exception in thread "main" java.lang.ClassCastException
com.sun.xml.internal.stream.events.EndElementEvent cannot be cast to
javax.xml.stream.events.Characters
如何使用StAX检索元素的默认值?我也应该解析相应的XML Schema吗?我的直觉说应该有其他更方便的解决方案。
答案 0 :(得分:0)
如果您告诉解析器验证文档,并告诉它要验证哪个模式或DTD,那么在解析过程中将自动填充其中定义的默认值。
如果你没有验证,他们可能不会。 (从理论上讲,可以提供一种模式,其中应用默认值但验证限制不是,但不能保证可用;请查看解析器的文档。)