powershell xml选择属性值where子句

powershell xml选择属性值where子句,xml,powershell,Xml,Powershell,我有一个包含以下元素的xml文件: <telecom use="HP" value="tel:+1-512-555-1212" /> <telecom use="WP" value="tel:+1-512-123-4567" /> 但是,我需要能够返回use=“HP”所在的节点,并且我不确定它们的顺序是否总是正确的 非常感谢您的帮助。使用XPath。假设$qrda是您的XML文档: $path = "/ClinicalDocument/recordTarget/pati

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

<telecom use="HP" value="tel:+1-512-555-1212" />
<telecom use="WP" value="tel:+1-512-123-4567" />
但是,我需要能够返回use=“HP”所在的节点,并且我不确定它们的顺序是否总是正确的


非常感谢您的帮助。

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

$path = "/ClinicalDocument/recordTarget/patientRole/telecom[@use='HP']"
$telecom = $qrda.SelectSingleNode($path)
由于该路径相当长且过于具体,我们可以将其缩小:

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

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

$path = "/ClinicalDocument/recordTarget/patientRole/telecom[@use='HP']"
$telecom = $qrda.SelectSingleNode($path)
由于该路径相当长且过于具体,我们可以将其缩小:

$telecom = $qrda.SelectSingleNode("//telecom[@use='HP']")
非XPATH方法:

($qrda.ClinicalDocument.recordTarget.patientRole.telecom | Where {$_.use -eq "HP"}).value
或者(感谢Tomalak的有益评论),使用以下格式:

非XPATH方法:

($qrda.ClinicalDocument.recordTarget.patientRole.telecom | Where {$_.use -eq "HP"}).value
或者(感谢Tomalak的有益评论),使用以下格式:


简短的形式,
($qrda.ClinicalDocument.recordTarget.patientRole.telecom | Where use-eq“HP”)
也应该是可能的。@Tomalak感谢-测试,有效,添加到答案中。简短的形式,
($qrda.ClinicalDocument.recordTarget.patientRole.telecom | Where use-eq“HP”)
也应该是可能的。@Tomalak感谢-测试,“它起作用了,”他补充道,“这对我不起作用。”。但是,看看我的xml文档是如何来自政府的,这并不奇怪。这与政府无关,与你的问题无关,没有显示xml文件本身。在这种情况下,我的答案是最好的猜测。这对我来说不起作用。但是,看看我的xml文档是如何来自政府的,这并不奇怪。这与政府无关,与你的问题无关,没有显示xml文件本身。在这种情况下,我的答案是最好的猜测。