我有以下XML

<NETCASTING>
    <MATCHINFO>
        <TEAM Name="TEAM A" >
            <PLAYER Birth_date="1987.04.20" Height="1.98" Surname="Robinson" Number="4"/>
            <PLAYER Birth_date="1988.07.11" Height="1.84" Surname="Zhedik" Number="7"/>
            <PLAYER Birth_date="1986.01.27" Height="1.86" Surname="Kirillova" Number="9"/>
        </TEAM>
        <TEAM Name="TEAM B" >
            <PLAYER Birth_date="1986.12.28" Height="1.97" Surname="Lyttle" Number="2"/>
            <PLAYER Birth_date="1989.09.18" Height="1.94" Surname="Arteshina" Number="4"/>
            <PLAYER Birth_date="1987.05.11" Height="1.96" Surname="Belyakova" Number="5"/>
            <PLAYER Birth_date="1989.03.13" Height="1.99" Surname="Baric" Number="9"/>
        </TEAM>
    </MATCHINFO>
    <BOXSCORE>
        <TEAM>
            <PLAYER Number="4" Start="1" Points="11"/>
            <PLAYER Number="7" Start="0" Points="3"/>
            <PLAYER Number="9" Start="1" Points="0"/>
        </TEAM>
        <TEAM>
            <PLAYER Number="2" Start="0" Points="14"/>
            <PLAYER Number="4" Start="0" Points="2"/>
            <PLAYER Number="5" Start="1" Points="2"/>
            <PLAYER Number="9" Start="0" Points="0"/>
        </TEAM>
    </BOXSCORE>
</NETCASTING>


我需要获取第一队(/ TEAM [1])中每个玩家的姓氏,出生日期,高度,数量和分数,其中Start =“ 1”

所以我需要得到:

<PLAYER Birth_date="1987.04.20" Height="1.98" Surname="Robinson" Number="4" Points="11"/>
<PLAYER Birth_date="1986.01.27" Height="1.86" Surname="Kirillova" Number="9" Points="0"/>


对于第二个TEAM(/ TEAM [2])

<PLAYER Birth_date="1987.05.11" Height="1.96" Surname="Belyakova" Number="5" Points="2"/>


在此先感谢您的帮助

最佳答案

我认为使用单个XPath表达式无法做到这一点。假设比赛信息始终由2个相对的团队组成,则可以使用2个XPath查询,每个团队一个,并使用union(|)运算符将结果加入:

/NETCASTING/MATCHINFO/TEAM[1]/PLAYER[
    @Number = /NETCASTING/BOXSCORE/TEAM[1]/PLAYER[@Start=1]/@Number
] |
/NETCASTING/MATCHINFO/TEAM[2]/PLAYER[
    @Number = /NETCASTING/BOXSCORE/TEAM[2]/PLAYER[@Start=1]/@Number
]


demo

输出:

<PLAYER Birth_date="1987.04.20"
        Height="1.98"
        Surname="Robinson"
        Number="4"/>
<PLAYER Birth_date="1986.01.27"
        Height="1.86"
        Surname="Kirillova"
        Number="9"/>
<PLAYER Birth_date="1987.05.11"
        Height="1.96"
        Surname="Belyakova"
        Number="5"/>

07-27 19:34