如何在PowerShell中读取XML文件中的元素?

时间:2019-03-11 08:01:51

标签: xml powershell

我有一个XML文件,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<INITIAL>
    <FB1>a</FB1>
    <FB2>b</FB2>
    <FB3>c</FB3>
    <FB4>d</FB4>
    <FB5>e</FB5>
    <FB6>f</FB6>
    <FB7>g</FB7>
    <FB8>h</FB8>
    <FB9>i</FB9>

</INITIAL>

我只想读取元素a并将其转换为字符串,就像这样:

abcdefghi

2 个答案:

答案 0 :(得分:0)

首先要从中创建一个System.Xml.XmlDocument。这是一个示例:

$theXml = [xml](gc $xmlPath)
$theXml.GetType().fullname

一旦有了它,您就可以按照自己的方式玩! -在您的示例中,您需要串联子元素的值。您会在网上找到很多示例,如何连接数组中的字符串值-example

$theXml.INITIAL.GetEnumerator() # this gives you enumeration of values in children to the 'INITIAL' element. 

我希望这会有所帮助。

编辑:是的,您的xml损坏了-我假设它为所有添加了</FB1>之类的结束标记。

答案 1 :(得分:0)

您可以使用XPath表达式获取所需的节点,然后使用-join运算符将字符串连接在一起。

XPath表达式/INITIAL/*表示顶层INITIAL元素内的每个元素。如果以后有人决定以某种方式扩展数据格式,请谨慎选择您真正想要的数据将为您提供帮助。

PS> $Data = New-Object Xml
PS> $Data.Load((Resolve-Path file.xml))

PS> $Data.SelectNodes("/INITIAL/*")."#text" -join ""
frfsftfufvfwfhgKfg

在Windows 10上使用Windows PowerShell 5.1进行了测试。