从 xml 文件读取单个节点

问题描述 投票:0回答:1

我正在尝试将单个节点的内容保存到此 xml 内容的变量中。

<?xml version="1.0"?>
<ProjectRuntimeInfo xmlns:xsd="http://www.test.org/20/test" xmlns:xsi="http://www.test.org/20/test">
  <Guid>37968228-1bc9-4b84-9eaa-cf0b7ef1c70e</Guid>
  <FileVersion>8.05.5006.24</FileVersion>
  <LastFullPublishDate>2023-10-06T14:00:01.8704004+02:00</LastFullPublishDate>
  <SolutionPath>C:\Users\Public\Documents\Projects\Programm\</SolutionPath>
  <SolutionName>Produktion</SolutionName>
  <LastUser>Administrator</LastUser>
  <MasterProjekt>Produktion</MasterProjekt>
</ProjectRuntimeInfo>

有问题的节点是“SolutionPath”,我需要保存的信息是

C:\Users\Public\Documents\Projects\Programm\

我用

读取了xml
 [xml]$xml = Get-Content -Path '.\AppInfo.xml' 

但我似乎找不到一种方法将所需的节点保存到同一个或另一个变量中,因为我应该导航到“SolutionPath”的节点的文本非常丰富。 所以,如果我是正确的,我必须以某种方式浏览它们,如下所示?

 $xml.ProjectRuntimeInfo xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance".SolutionPath 

但这对我来说似乎很奇怪。 感谢您的帮助<3

powershell
1个回答
0
投票
  • PowerShell 允许您将任何已解析的

    [xml]
    文档视为对象图,您可以使用常规的点表示法深入研究,因为PowerShell 将 XML(子)元素和 XML 属性显示为无命名空间图中每个对象(XML 节点)的属性 - 请参阅此答案了解更多信息。

  • 虽然类似

    [xml]$xml = Get-Content -Path ...
    是将 XML 文件读入
    [xml]
    实例的便捷方法,但它是 最好避免,因为它存在使用错误字符编码的风险 - 请参阅 这个答案附加信息。

因此:

($xml = [xml]::new()).Load((Convert-Path '.\AppInfo.xml'))
$xml.ProjectRuntimeInfo.SolutionPath
© www.soinside.com 2019 - 2024. All rights reserved.