Java 使用嵌套标记解析XML属性的简便方法
我目前正在尝试解析一个包含棒球成绩的XML文件。该文件将所有信息存储在属性中,这给我带来了一点麻烦。下面是一个设置示例Java 使用嵌套标记解析XML属性的简便方法,java,xml,dom,Java,Xml,Dom,我目前正在尝试解析一个包含棒球成绩的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"/>
<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>
如果所有属性都存储在游戏属性中,这将很好,但是由于很多属性都是嵌套的,因此必须为子属性创建节点列表,然后再次重复,特别是当我试图获取20-30个统计数据时,这将变得很麻烦。有没有一种更简单的方法可以说,从
中获取主场得分,赢家的名字和输家的名字 XPath使XML访问变得简单得多:
有没有更简单的方法说,从
获胜投手的名字
失去了投手的名字
使用上面的XPath并结合使用。您可以尝试Jackson的XML扩展:,它允许您将XML序列化/反序列化为POJO的很好,我来看看。这很有魅力。谢谢你的建议。我最终选择了XPATH作为我必须做的事情,但是谢谢你的建议。如果我使用JSON,我可能会尝试使用Jacksons,因为它似乎是最好的。
NamedNodeMap ga= game.getAttributes();
Node stadium = ga.getNamedItem("venue");
String stad = stadium.getNodeValue();
NodeList linescore = game.getChildNodes();
NamedNodeMap ls = linescore.item(3).getAttributes();
....
/game/linescore/r/@home
/game/winning_pitcher/@first
/game/losing_pitcher/@first