java - Java:如何使用 stax 从 xml 获取特定信息
问题描述
我无法使用 stax 从我的 xml 获取特定信息。在我的 xml 中,我有一个电流和平均值,它们里面都有一个旅行时间。但我只想从当前而不是从平均值中获取旅行时间。这是我的 xml 的样子:
<allroutes>
<routes>
<route identification="id_1">
<current>
<traveltime time="1187" trustworthy="j" />
<delay time="0" trustworthy="j" />
</current>
<average>
<traveltime time="1187" trustworthy="j" />
<delay time="0" trustworthy="j" />
</average>
</route>
<route identification="id_2">
<current>
<traveltime time="995" trustworthy="j" />
<delay time="0" trustworthy="j" />
</current>
<average>
<traveltime time="995" trustworthy="j" />
<delay time="0" trustworthy="j" />
</average>
</route>
</routes>
<subpaths>
<subpath identification="id_1">
<current>
<traveltime time="0" trustworthy="n" />
<delay time="0" trustworthy="n" />
</current>
<average>
<traveltime time="0" trustworthy="n" />
<delay time="0" trustworthy="n" />
</average>
</subpath>
<subpath identification="id_2">
<current>
<traveltime time="0" trustworthy="n" />
<delay time="0" trustworthy="n" />
</current>
<average>
<traveltime time="0" trustworthy="n" />
<delay time="0" trustworthy="n" />
</average>
</subpath>
</subpaths>
</allroutes>
我目前的代码如下所示:
try{
while (streamReader.hasNext()) {
streamReader.next();
if (streamReader.getEventType() == XMLStreamReader.START_ELEMENT) {
switch (streamReader.getLocalName()) {
case "route":
//store which type
break;
case "subpath":
//store which type
break;
case "traveltime":
//store traveltime
break;
}
}
if (streamReader.getEventType() == XMLStreamReader.END_ELEMENT && "allroutes".equals(streamReader.getLocalName())) {
//stop the loop and give back the object
}
}
}catch(XMLStreamException ex) {
LOGGER.log(Level.SEVERE, "XMLStreamException: " + ex);
}
我需要添加/更改什么才能仅从该阅读器内部的“当前”获取旅行时间?
解决方案
您只需要跟踪您在文档中的位置。例如,通常的做法是保留一堆元素名称:点击 startElement 时将名称压入堆栈,点击 endElement 时将其弹出,然后检查堆栈以发现当前正在处理的元素的上下文.
推荐阅读
- mysql - MySQL 按月显示记录
- reactjs - 在 react-native 中发送请求标头/授权 axios.post
- php - mysql 表值合并为一个值而不是多个
- sql-server - 从给定的出生日期列中查找 15 到 25 岁之间的年龄?
- reactjs - 状态在 useffect() 内部更新,但组件未重新渲染
- java - 在 Java switch case 中检查布尔值
- mysql - 连接wordpress容器ta多数据库容器
- ibm-watson - 如何从 IBM Watson 笔记本中提取数据(下载)
- javascript - 如何处理模板文字中的多余空格
- php - 如何从 AJAX 搜索中检索结果?