我尝试使用StAX解析器解析xml文件,但我遇到两个问题: 第一:两个节点具有相同的名称 第二:在值
之前阅读确切的评论<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解析器,很容易处理dublicate节点名称和评论,不幸的是我现在必须使用StAX并且我不知道如何解决这些问题:(
答案 0 :(得分:0)
<v> 2.74 </v><v> 1.63 </v>
StAX没有问题,如果您按照顺序完成事件:
因此,您需要在代码中处理最少的上下文信息,以确定它是第一次还是第二次启动<v>
元素。
也没有问题,StAX解析也会触发注释事件,您可以简单地将注释作为String与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
}
}