StAX 解析器:重复的节点名称和特定注释

StAX Parser : Duplicated Node name and specific comments

我尝试使用 StAX 解析器解析 xml 文件,但我遇到了两个问题: 第一:两个节点同名 第二:阅读 values

之前的确切注释
<database>
<!-- 2015-03-10 01:29:00 EET / 130 --> <row><v> 2.74 </v><v> 1.63 </v></row>
<!-- 2015-03-10 01:30:00 EET / 170 --> <row><v> 5.33 </v><v> 1.68 </v></row>
<!-- 2015-03-10 01:31:00 EET / 180 --> <row><v> 7.62 </v><v> 1.83 </v></row>
<database>

我想收集这样的数据:

日期:2015-03-10 01:29:00

V1: 2.74

V2:1.63

我以前使用 Dom 解析器,很容易处理重复的节点名称和注释,不幸的是我现在必须使用 StAX,我不知道如何解决这些问题:(

  1. 第一期:两个节点同名
<v> 2.74 </v><v> 1.63 </v>

StAX 没有问题,如果您按照事件顺序进行操作,您会得到:

  • 开始元素 ( v )
  • 字符 ( 2.74 )
  • endElement ( v )
  • 开始元素 ( v )
  • 字符 ( 1.63 )
  • endElement ( v )

因此,您需要在代码中处理最少的上下文信息,以了解您是第一次还是第二次启动 <v> 元素。

  1. 第二期:阅读评论

也没有问题,StAX 解析也会触发评论事件,您可以简单地将评论作为带有 API 的字符串获取并提取自己的预期值,例如:

XMLInputFactory inputFactory = XMLInputFactory.newInstance();
XMLStreamReader streamReader = inputFactory.createXMLStreamReader(inputStream);
while (streamReader.hasNext()) {
    int event = streamReader.next();
    if(event == XMLStreamConstants.COMMENT) {
        String aDateStringVal = streamReader.getText();
        // + extract your date value from the comment string
    }
}