我正在尝试遍历XML文档中的每个节点。我似乎无法弄清楚如何做到这一点。我在PowerShell中这样做,但可以从C#翻译。
foreach ($file in Get-ChildItem ($directoryUrl+"\*.*") -include *.xml)
{
[xml]$xmlFile = Get-Content $file; #get content from xml file
Write-Host "Fff";
$firstNode = $xmlFile.DocumentElement;
$children = $firstNode.ChildNodes;
现在这会得到第一个节点的子节点,这个节点很好,但是它正在作为一个孩子接收Random
,但我也希望它能够获取Random
XML标签内的内容。就像在细节标签中一样。
如何在PowerShell中轻松获得此功能?
我正在阅读的XML是:
<UserBase>
<User>
<Name>Kalle</Name>
</User>
<User>
<Name>Becker</Name>
</User>
<User>
<Name>Daniel</Name>
</User>
<User>
<Name>Anderson</Name>
</User>
<Random>
<Details>myself</Details>
<Details>mysdelf</Details>
</Random>
</UserBase>
答案 0 :(得分:0)
不确定我是否真的理解您的问题,但是要从XML文档获取所有节点,您可以调用XPath来解决问题:
$xml = [xml] @"
<UserBase>
<User>
<Name>Kalle</Name>
</User>
<User>
<Name>Becker</Name>
</User>
<User>
<Name>Daniel</Name>
</User>
<User>
<Name>Anderson</Name>
</User>
<Random>
<Details>myself</Details>
<Details>mysdelf</Details>
</Random>
</UserBase>
"@
select-xml $xml -xpath "/descendant-or-self::node()" |
where { !$_.Node.Name.Contains("#") }