使用PowerShell读取XML指定属性及InnerText值的问题与解决
XML属性与节点文本读取的PowerShell解决办法
目标XML
<application-set> <application application-containing-files="true"> <application-information> <application-number application-type="fdaat4">123456</application-number> </application-information> <submission-information> <submission-id submission-type="fdast9">0048</submission-id> <sequence-number submission-sub-type="fdasst4">0053</sequence-number> <form form-type="fdaft1"></form> </submission-information> </application> </application-set>
需求
用PowerShell完成两个操作:
- 找到
application-type属性为fdaat4的<application-number>节点,读取其文本值123456 - 找到
submission-type属性为fdast9的<submission-id>节点,读取其文本值0048
之前试了各种方法,折腾了好几个小时都没成功。
解决方法
核心是用XPath精准定位节点,再通过对应的属性或文本属性获取值。注意原代码里的//admin/是多余的(目标XML里没有这个节点),修正后的代码如下:
读取节点文本值(对应需求的123456和0048)
# 获取application-number节点的文本值 $appNumberText = $xml.SelectSingleNode("//application-set/application/application-information/application-number[@application-type='fdaat4']").InnerText # 获取submission-id节点的文本值 $submissionIdText = $xml.SelectSingleNode("//application-set/application/submission-information/submission-id[@submission-type='fdast9']").InnerText
读取属性值(若需要获取application-type、submission-type的属性内容)
$appTypeValue = $xml.SelectSingleNode("//application-set/application/application-information/application-number[@application-type]")."application-type" $submissionTypeValue = $xml.SelectSingleNode("//application-set/application/submission-information/submission-id[@submission-type]")."submission-type"
内容的提问来源于stack exchange,提问作者HoangMN
相关产品推荐
相关产品推荐

