【发布时间】:2017-11-02 10:22:39
【问题描述】:
我遇到了从 XML 获取具有特定名称的节点的所有值的最有效方法的问题。
例如:
<h1>
<MyNode>Node One</MyNode>
<h2>
<MyNode>Note Two</MyNode>
<DiffrentNode>I dont want that</DiffrentNode>
<h3>
<MyNode>Node Three</MyNode>
</h3>
</h2>
<HHH1>
<MyNode>Node Four</MyNode>
</HHH1>
</h1>
<g2>
<MyNode>Node Five</MyNode>
</g2>
我想从 XML 中获取这些值:
- 节点一
- 节点二
- 节点三
- 节点四
- 节点五
我希望能够用这样的代码做同样的事情:
<h1>
<h2 MyArgument = "Argument One" Stuff = "I dont want that">
<DiffrentNode>Something I dont want</DiffrentNode>
<h3 MyArgument = "Argument Two" Stuff = "I dont want that too">
</h3>
</h2>
<HHH1>
<DiffrentNode>Something I dont want</DiffrentNode>
</HHH1>
</h1>
<g2 MyArgument = "Argument Three">
<DiffrentNode>Something I dont want</DiffrentNode>
</g2>
然后得到:
- 论据一
- 论据二
- 论据三
有什么想法吗?到目前为止,我尝试过:
$xdoc = New-Object System.Xml.XmlDocument
$file = Resolve-Path("C:\CompiledDynoview.xml")
$xdoc.load($file)
[xml] $xdoc = Get-Content $file
$xdoc.h1.MyNode
$xdoc.h1.h2.MyNode
$xdoc.h1.h3.MyNode
...
但这似乎不是最好的方法。应该有更好的东西。
【问题讨论】:
-
Select-Xml -XPath '//MyNode' -Path 'C:\CompiledDynoview.xml'
标签: xml powershell