powershell xml select属性值where子句

时间:2017-07-21 13:29:58

标签: xml powershell

我有一个包含以下元素的xml文件:

<telecom use="HP" value="tel:+1-512-555-1212" />
<telecom use="WP" value="tel:+1-512-123-4567" />

这将返回第一个节点的值:

$qrda.ClinicalDocument.recordTarget.patientRole.telecom[0].value

但是我需要能够返回use =“HP”的节点,我不确定它们是否总是按照正确的顺序。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:3)

非XPATH方法:

($qrda.ClinicalDocument.recordTarget.patientRole.telecom | Where {$_.use -eq "HP"}).value

或者(感谢Tomalak的有用评论),使用the comparison statement格式:

($qrda.ClinicalDocument.recordTarget.patientRole.telecom | Where use -eq "HP").value

答案 1 :(得分:2)

使用XPath。假设$qrda是您的XML文档:

$path = "/ClinicalDocument/recordTarget/patientRole/telecom[@use='HP']"
$telecom = $qrda.SelectSingleNode($path)

由于该路径非常长且过于具体,我们可以减少它:

$telecom = $qrda.SelectSingleNode("//telecom[@use='HP']")