【发布时间】:2016-11-27 21:00:29
【问题描述】:
我有一些看起来像这样的 XML:
<contacts>
<person>
<name>Bob</name>
<phoneNumber>1234</phoneNumber>
<mobileNumber>5678</mobileNumber>
<address>Address 1</address>
</person>
<person>
<name>Sue</name>
<phoneNumber>4321</phoneNumber>
<address>Address 2</address>
</person>
</contacts>
还有一些 Xpath 查询<person> 的所有子节点:
//name | //phoneNumber | //mobileNumber | //address
结果是这样的:
Bob
1234
5678
Address 1
Sue
4321
Address 2
我希望 Xpath 查询返回一些内容(字符串?),以便我可以确定哪个 <person> 缺少子节点(在这种情况下,第二个人没有 <mobileNumber>。
我想要的输出如下所示:
Bob
1234
5678
Address 1
Sue
4321
null
Address 2
谢谢,如果您需要更多详细信息,请告诉我!
更新
该表达式必须对 Xpath 1.0 有效,因为我使用的是 javascript 的 document.evaluate。
更新
我对这个表达式有一些了解:
concat(substring(/contacts/person/mobileNumber, 1 div boolean(/contacts/person/mobileNumber)),substring('null', 1 div not(/contacts/person/mobileNumber)))
但是它现在只计算第一个 <person> 而第二个不返回任何内容。有什么建议吗?
【问题讨论】:
-
使用 XPath 1.0,您可以使用 this answer 中描述的 hack。
-
//人 | //人/*
-
@nwellnhof 谢谢,这为我指明了方向。请参阅上面的更新:)