获取XML中所有节点的列表
本文关键字:节点 列表 XML 获取 | 更新日期: 2023-09-27 18:14:42
我正在尝试遍历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标记内部的内容。如details标签
如何在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>
我不确定我是否真的理解了您的问题,但是要从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("#") }