获取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中所有节点的列表

我不确定我是否真的理解了您的问题,但是要从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("#") }