programing

Powershell: XML을 문자열로 변환

mailnote 2023. 10. 23. 22:01
반응형

Powershell: XML을 문자열로 변환

XML-Object를 문자열로 변환하는 방법을 찾고 있습니다.

파워셸에서 $xml.toString()과 같은 방법이 있습니까?

당신은 아마도 당신을 찾고 있을 것입니다.OuterXml.

$xml.OuterXml당신이 원하는 것을 줘야 합니다

XML 개체를 어떻게 만들고 있습니까?

일반적으로 개체에서 XML 문자열을 원할 경우 다음을 사용합니다.

$object | ConvertTo-Xml -As String

시도해 보기:

[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 Forms의 TextBox에 썼습니다.

간단한 버전:

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

Xml 경로는 소스 XML 트리 구조가 무엇이든 간에$XmlObject.

그래서 만약 당신의$XmlObject다음과 같습니다.

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

다음을 사용합니다.

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

PowerShell 7+ 이후에는 다음을 사용하여 XML을 미리 인쇄하는 매우 간단한 방법이 있습니다.

$xmlNode = [xml] '<foo x="42" y="21"><bar>baz</bar></foo>'
[System.Xml.Linq.XElement]::Parse( $xmlNode.OuterXml ).ToString()

출력:

<foo x="42" y="21">
  <bar>baz</bar>
</foo>

C# 답변의 원래 포스터가 썼듯이 메모리 사용 및 실행 시간 측면에서 가장 효율적인 방법은 아닙니다.또한 서식을 제어할 수 없습니다. 예를 들어 새 줄에 속성을 인쇄할 방법을 찾지 못했습니다.만약 이것들이 당신에게 중요하다면,StringWriter 해결책이 더 적절할 것입니다.

언급URL : https://stackoverflow.com/questions/15410455/powershell-convert-xml-to-string

반응형