我目前正在尝试使用棒球比分解析XML文件。该文件将所有信息存储在属性中,这给我带来了一些麻烦。以下是设置示例。
<game id="2016/07/20/atlmlb-cinmlb-1" venue="Great American Ball Park">
<linescore>
<inning away="1" home="0"/>
<r away="3" home="6" diff="3"/>
<h away="9" home="12"/>
</linescore>
<winning_pitcher id="543101" last="test" first="bob">
<losing_pitcher id="449173" last="test" first="joe">
</game>
到目前为止我所拥有的是:
NamedNodeMap ga= game.getAttributes();
Node stadium = ga.getNamedItem("venue");
String stad = stadium.getNodeValue();
NodeList linescore = game.getChildNodes();
NamedNodeMap ls = linescore.item(3).getAttributes();
....
如果所有内容都存储在游戏属性中,这样会很好,但由于很多内容都是嵌套的,因此必须为子属性创建节点列表变得很麻烦,然后重复一遍,特别是在我尝试的时候抓住20-30个统计数据。是否有一种更简单的方式来说,从<r>
获得主场比分,获胜的投手名字和失去投手的名字。
答案 0 :(得分:1)
XPath使XML访问变得不那么麻烦:
是否有更简单的说法,从
获取主分数<r>
/game/linescore/r/@home
获胜投手的名字
/game/winning_pitcher/@first
失去了投手的名字
/game/losing_pitcher/@first
将上述XPath与How to read XML using XPath in Java结合使用。
答案 1 :(得分:1)
您可以尝试使用Jackson扩展XML:https://github.com/FasterXML/jackson-dataformat-xml,它允许您将XML序列化/反序列化为POJO&#39>