使用PowerShell加载XML字符串

ric*_*fox 13 xml powershell

我已经定义了一个XML字符串

$str = "<a><b></b></a>"
Run Code Online (Sandbox Code Playgroud)

现在我想将它加载到[xml]变量中以便能够操纵它的节点等.下面的行会导致错误...

$str = [xml]"<a><b></b></a>"
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢?

Urd*_*rda 22

我发现这篇文章非常好:http://www.pluralsight-training.net/community/blogs/dan/archive/2006/11/25/42506.aspx

这一个:http://powershell.com/cs/blogs/ebook/archive/2009/03/30/chapter-14-xml.aspx

适用于需要在PowerShell中处理XML的情况


你的问题似乎对我有用.你发布错误怎么样,我们可以看到发生了什么?我刚刚test在我的字符串中添加了以显示我可以访问该值,但它也可以在没有它的情况下工作.

是的我添加了测试,但你可以看到我的例子有效 完整图像


另一个编辑:

铸造一个字符串也对我有用,所以你怎么样向我们展示一些工作,因为我无法重现你的问题 我再次添加了测试,以表明我可以访问XML成员 完整图像


...我用你的字符串运行它,它工作得很好...... ...注意有一个空的回报? 完整图像


小智 6

尝试这个

$xmlcontent = variable which holds xml data in string
$xml = New-Object -TypeName System.Xml.XmlDocument
$xml.LoadXml($xmlcontent)
Run Code Online (Sandbox Code Playgroud)


Hoc*_*eyJ 5

为了搜索者的利益,如果您的 xml 顶行包含格式(而不是直接在根节点中)信息,则需要先删除顶行,然后才能进行转换

例如

<?xml version="1.0" encoding="utf-8"?>
<Courses>
  <CourseEntry Type="Mandatory" Name="Math"/>
  <CourseEntry Type="Mandatory" Name="Coding" />
  <CourseEntry Type="Optional" Name="Economics" />
  <CourseEntry Type="Optional" Name="History" />
</Courses>
Run Code Online (Sandbox Code Playgroud)

要求:

$xmlFile = Get-Content "*.xml"
$xmlFileMinusFormatData = $xmlFile[1..($xmlFile.Length - 1)] #we need to remove the first line
$usableXml = [xml]$xmlFileMinusFormatData # Convert to xml for easy handling
$usableXml.Courses.CourseEntry.Count # just a count of rows
Run Code Online (Sandbox Code Playgroud)