如何解析一个简单的XML元素的默认值?

时间:2014-06-11 19:36:33

标签: xml xml-parsing stax

我有以下元素声明:

<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吗?我的直觉说应该有其他更方便的解决方案。

1 个答案:

答案 0 :(得分:0)

如果您告诉解析器验证文档,并告诉它要验证哪个模式或DTD,那么在解析过程中将自动填充其中定义的默认值。

如果你没有验证,他们可能不会。 (从理论上讲,可以提供一种模式,其中应用默认值但验证限制不是,但不能保证可用;请查看解析器的文档。)