Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用嵌套标记解析XML属性的简便方法_Java_Xml_Dom - Fatal编程技术网

Java 使用嵌套标记解析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"/>

我目前正在尝试解析一个包含棒球成绩的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>

如果所有属性都存储在游戏属性中,这将很好,但是由于很多属性都是嵌套的,因此必须为子属性创建节点列表,然后再次重复,特别是当我试图获取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