Powershell,输出xml到屏幕

时间:2011-05-26 16:41:09

标签: xml powershell

我正在学习PowerShell。我可以将xml文件加载到变量中并对其进行操作。然后我可以调用对象的save方法来保存到磁盘。我希望有一种方法可以将生成的xml输出到屏幕。我好像找不到一个。有没有办法,除了输出到文件然后文件到屏幕?

5 个答案:

答案 0 :(得分:35)

我无法让社区扩展工作,我真的不想安装额外的东西。我在微软博客上找到了另一种方法 -

function WriteXmlToScreen ([xml]$xml)
{
    $StringWriter = New-Object System.IO.StringWriter;
    $XmlWriter = New-Object System.Xml.XmlTextWriter $StringWriter;
    $XmlWriter.Formatting = "indented";
    $xml.WriteTo($XmlWriter);
    $XmlWriter.Flush();
    $StringWriter.Flush();
    Write-Output $StringWriter.ToString();
}

$xml = [xml]'<root><so><user name="john">thats me</user><user name="jane">do you like her?</user></so></root>'
WriteXmlToScreen $xml

答案 1 :(得分:17)

我知道的唯一方法是使用System.Xmlouterxmlinnerxml属性。只要源是。

,这些属性的代码应该已经缩进

答案 2 :(得分:4)

看看PSCX module。您将找到完全相同的Format-Xml cmdlet。

示例:

Import-Module pscx
$xml = [xml]'<root><so><user name="john">thats me</user><user name="jane">do you like her?</user></so></root>'
Format-Xml -InputObject $xml

将产生:

<root>
  <so>
    <user name="john">thats me</user>
    <user name="jane">do you like her?</user>
  </so>
</root>

有关详细信息,请查看help format-xml -full

答案 3 :(得分:0)

这是一个旧帖子,但我想分享我的hackish答案。我需要将xml发送到php,我无法发送任何其他内容。

我想出的答案是将文件保存到磁盘,然后在其上运行获取内容。这回传了xml文本,没有别的:

#hack alert.  
#we need to echo out just the text of the XML back to PHP. 

IF ("$env:TEMP\xml.xml") {Remove-Item "$env:TEMP\xml.xml"}
#$xmlDoc.Save("c:\temp\xml.xml")
$xmlDoc.Save("$env:TEMP\xml.xml")
get-content "$env:TEMP\xml.xml"

在我的情况下,我将它发送回PHP并且它运行良好

答案 4 :(得分:0)

我发现的最干净的解决方案是像这样使用 System.Xml.Linq.XDocument.Parse

Write-Host ([System.Xml.Linq.XDocument]::Parse("$(Get-Content -path 'c:\myxml.xml' -Raw)"));