source

Powershell, xml을 화면으로 출력

nicesource 2023. 8. 12. 10:26
반응형

Powershell, xml을 화면으로 출력

저는 PowerShell을 배우고 있습니다.변수에 xml 파일을 로드하고 조작할 수 있습니다.그런 다음 개체의 저장 방법을 호출하여 디스크에 저장할 수 있습니다.하지만 결과적으로 xml을 화면으로 출력할 수 있는 방법이 있을 것으로 예상했습니다.찾을 수 없을 것 같습니다.파일로 출력한 다음 파일에서 화면으로 출력하는 것 외에 다른 방법이 있습니까?

Community Extensions를 작동시키지 못했으며 추가 설치를 원하지 않습니다.마이크로소프트 블로그에서 또 다른 접근법을 찾았습니다.

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

내가 아는 유일한 방법은System.Xml같은 속성outerxml또는innerxml이러한 속성은 소스가 있는 한 이미 들여쓰기된 코드가 있어야 합니다.

PSCX 모듈을 살펴봅니다.찾을 수 있습니다.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

[System.Xml.Linq.XDocument]::Parse($Xml.OuterXml).ToString()

내가 찾은 가장 깨끗한 해결책은 시스템을 사용하는 것입니다.Xml.Linq.XDocument.다음과 같이 구문 분석:

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

이것은 오래된 스레드이지만 저는 저의 진부한 답변을 공유하고 싶었습니다.나는 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로 다시 보내고 있었고 그것은 완벽하게 작동했습니다.

언급URL : https://stackoverflow.com/questions/6142053/powershell-output-xml-to-screen

반응형