【问题标题】:Powershell: Convert XML to StringPowershell:将 XML 转换为字符串
【发布时间】:2013-03-02 20:55:28
【问题描述】:

我正在寻找一种将 XML-Object 转换为字符串的方法。

Powershell 中有没有类似 $xml.toString() 的方法?

【问题讨论】:

    标签: xml string powershell converter


    【解决方案1】:

    您可能正在寻找OuterXml

    $xml.OuterXml 应该给你你想要的。

    【讨论】:

    • 这对我也有用。唯一的问题是我在转换中丢失了空格格式。关于如何保留或添加漂亮的选项卡格式的任何想法?
    • 试试$xml.PreserveWhiteSpace = $true
    【解决方案2】:

    您是如何创建 XML 对象的?

    通常,如果您想要一个对象的 XML 字符串,您会使用:

    $object | ConvertTo-Xml -As String
    

    【讨论】:

    • 我以这种方式启动 XML-Object: [XML]$xml = '';当脚本运行时,我向这个对象附加了很多信息。最后我需要这个 XML 文件是一个字符串,就像 ''
    • 如果你需要它是一个字符串,不要让它成为 XML。以 here-string 开头,然后附加到该字符串。
    【解决方案3】:

    试试这个:

    [string[]]$text = $doc.OuterXml #or use Get-Content to read an XML File
    $data = New-Object System.Collections.ArrayList
    [void] $data.Add($text -join "`n")
    $tmpDoc = New-Object System.Xml.XmlDataDocument
    $tmpDoc.LoadXml($data -join "`n")
    $sw = New-Object System.IO.StringWriter
    $writer = New-Object System.Xml.XmlTextWriter($sw)
    $writer.Formatting = [System.Xml.Formatting]::Indented
    $tmpDoc.WriteContentTo($writer)
    $sw.ToString()
    

    我使用此脚本将生成的 XML 写入 Windows 窗体中的文本框。

    【讨论】:

      【解决方案4】:

      更简单的版本:

      [string]$outputString = $XmlObject.childNode.childNode.theElementValueIWant.ToString()
      

      Xml 路径是来自$XmlObject 的任何源 XML 树结构。

      所以如果你的$XmlObject 是:

      <xmlRoot>
        <firstLevel>
          <secondLevel>
            <iWantThisValue>THE STRING I SEEK</iWantThisValue>
          </secondLevel>
        </firstLevel>
      </xmlRoot>
      

      你会使用:

      [string]$outputString = $XmlObject.firstLevel.secondLevel.iWantThisValue.ToString()
      

      【讨论】:

        猜你喜欢
        • 2021-01-22
        • 1970-01-01
        • 1970-01-01
        • 2018-08-29
        • 1970-01-01
        • 1970-01-01
        • 2014-10-08
        • 2012-10-26
        • 2017-11-07
        相关资源
        最近更新 更多