我有以下XPATH /OMRequest/Record/Customer/PhoneList/Phone/text()
,当Phone
中只有一个PhoneList
时,它可以很好地工作。但是,我想要一个XPath,它返回Phone
中的所有PhoneList
。
以下是示例XML:
<OMRequest>
<Record>
<Customer>
<PhoneList>
<Phone>000000000</Phone>
<Phone>000000000</Phone>
</PhoneList>
<CustomerId>424792716</CustomerId>
<AccountNumber>1</AccountNumber>
<ECPDId/>
<ContractId/>
</Customer>
</Record>
</OMRequest>
答案 0 :(得分:3)
如果文档中存在这样的文本节点,/OMRequest/Record/Customer/PhoneList/Phone/text()
就会单独选择多个文本节点。
如果仅获得第一个,则可能会将节点集传递给另一个功能,该功能仅在该节点集的第一个节点上运行(使用XPath 1.0术语和构造)。
例如,在XPath 1.0中,
string(/OMRequest/Record/Customer/PhoneList/Phone/text())
仅采用所选文本节点的 first 的字符串值:
7702958254
其他功能以及来自托管语言的其他调用的行为也类似。
如果要在所有选定的文本节点上进行操作,则必须在XPath 1.0中迭代XPath之外的托管语言。 XPath 2.0具有序列而不是节点集,并且具有在XPath自身内部对序列进行操作的其他选项。