use*_*585 15 xml powershell scripting xpath
我试图使用powershell和XPath来选择下面的xml示例中显示的name属性.
$xml_peoples= $file.SelectNodes("//people")
foreach ($person in $xml_peoples){
echo $person.attributes
#echo $person.attributes.name
}
Run Code Online (Sandbox Code Playgroud)
上面是运行试图获取名称的代码,但它似乎不起作用.有什么建议?
<peoples>
<person name='James'>
<device>
<id>james1</id>
<ip>192.192.192.192</ip>
</device>
</person>
</peoples>
Run Code Online (Sandbox Code Playgroud)
提前致谢!
Ans*_*ers 34
这两行应该足够了:
[xml]$xml = Get-Content 'C:\path\to\your.xml'
$xml.selectNodes('//person') | select Name
Run Code Online (Sandbox Code Playgroud)
Com*_*ast 21
一行怎么样?
Select-XML -path "pathtoxml" -xpath "//person/@name"
Adi*_*bar 15
我不确定$ hub是什么,你从中间开始编写代码,所以不清楚你是否正确地将$ file设置为 XmlDocument对象,但我认为这就是你想要的:
[System.Xml.XmlDocument]$file = new-object System.Xml.XmlDocument
$file.load(<path to XML file>)
$xml_peoples= $file.SelectNodes("/peoples/person")
foreach ($person in $xml_peoples) {
echo $person.name
}
Run Code Online (Sandbox Code Playgroud)
对于必须解决 Select-Xml 的垃圾名称空间处理的任何人,只要您知道直接路径,这里有一个不关心的单行:
([xml](Get-Content -Path "path\to.xml")).Peoples.Person.Name
Run Code Online (Sandbox Code Playgroud)
以上也将返回所有匹配的节点。它没有那么强大,但是当您了解架构并希望快速从中获得一件事时,它是干净的。
归档时间: |
|
查看次数: |
75358 次 |
最近记录: |