XML来源:
<schools>
<school>
<name>School A</name>
<student>
<name>Student A</name>
<id>12345</id>
</student>
<student>
<name>Student B</name>
<id>45678</id>
</student>
</school>
<school>
<name>School C</name>
<student>
<name>Student C</name>
<id>91178</id>
</student>
<student>
<name>Student D</name>
<id>99999</id>
</student>
</school>
</schools>
我仍然是XPath的初学者。我想让学生获得整体最高ID(例如99999),而不是每所学校。我无法更改我的python代码
tree.xpath(" ... ")
我只能修改xpath。我试过"//student[not(../student/id > id)]
,但这给了我各个学校最高学生。我想要的是整体最高ID。我该如何修改我的xpath?
编辑: 我如何从学校开始写作?如果我想要“最高ID”学生退学的学校名称,我的意思是什么?
答案 0 :(得分:12)
怎么样:
//student[not(../../school/student/id > id)]
或者更简单:
//student[not(//student/id > id)]
要获得具有最高学生ID的<school/>
元素,我相信这会有效:
//school[student[not(//student/id > id)]]
答案 1 :(得分:2)
使用:
/schools/school[student[not(../../school/student/id > id)]]/name
或更短(仅适用于此架构):
/*/school[*/id[not(//id > .)]]/name
答案 2 :(得分:2)
为了完整性......如果您可以使用XPath 2.0,则可以使用max()
,如下所示:
/*/school[*/id = max(//id)]/name
它比XPath 1.0中的要容易一些。
但是AFAIK你没有Python中的XPath 2.0。所以请使用@ cdhowie's或@Alejandro的答案。