我有以下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>
我需要得到Surname,Birth_date,Height,Number&amp;第一队(/ 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"/>
of 2nd TEAM(/ TEAM [2])
<PLAYER Birth_date="1987.05.11" Height="1.96" Surname="Belyakova" Number="5" Points="2"/>
提前感谢您的帮助
答案 0 :(得分: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"/>
答案 1 :(得分:1)
XPath用于选择,而不是用于转换。 (XSLT用于转换。)
您只能在输入文档中存在的PLAYER
元素中进行选择。由于输入XML中没有PLAYER
元素,其中@Points
属性为 ,其他属性(@Birth_date
等),您的请求,包括,
<PLAYER Birth_date="1987.04.20"
Height="1.98"
Surname="Robinson"
Number="4"
Points="11"/> <!-- Cannot add Points attribute -->
单独使用XPath是不可能的。您需要托管语言(XSLT,Python,Java等)的帮助。