programing

PowerShell에서 XML용 하위 요소를 추가하는 방법

megabox 2023. 11. 5. 11:09
반응형

PowerShell에서 XML용 하위 요소를 추가하는 방법

이 xml에 대한 하위 XML 요소를 만들려고 합니다.

<?xml version="1.0" encoding="utf-8"?>
<configuration>
</configuration>

이 PowerShell 스크립트를 사용합니다.

[xml] $doc = Get-Content($filePath)
$child = $doc.CreateElement("newElement")
$doc.configuration.AppendChild($child)

오류가 있습니다.[시스템] 때문에 메서드 호출에 실패했습니다.String]에 'ApendChild'라는 메서드가 없습니다.

점 표기법을 사용하여 XML 파일을 탐색하는 경우(예:$doc.configuration), 파워셸은 그것이 반환되는 것에 대해 영리해지려고 노력합니다.

  • 대상 요소가 비어 있거나 텍스트 노드 하나만 포함된 경우 PS는 다음을 반환합니다.String.
  • 대상 요소에 텍스트 노드 이외의 하위 노드가 포함되어 있으면 다음 값을 반환합니다.XmlElement.
  • 대상 요소가 여러 개 존재할 경우 다음을 반환합니다.Object[], 여기서 각각의 개별 배열 요소는 다시 이러한 규칙의 적용을 받습니다. 예를 들어, 그것은 다음 중 하나가 될 것입니다.String혹은XmlElement내용에 따라서
  • 대상 요소가 존재하지 않으면 PS가 반환됩니다.$null.

사용자의 경우 문서 요소에 노드를 추가하기 때문에 쉽습니다.

$doc = New-Object System.Xml.XmlDocument
$doc.Load($filePath)
$child = $doc.CreateElement("newElement")
$doc.DocumentElement.AppendChild($child)

하지만 당신은 사용할 수 있습니다.$doc.SelectNodes()아니면$doc.SelectSingleNode()XML 문서를 탐색하고 항상 노드/노드 목록을 반환합니다.


이 동작의 민감성에 대해 논쟁할 수 있지만, 실제로는 구성 파일이나 API 응답에서 값을 읽는 것과 같은 작업과 같이 (정교하게 구조화된) XML을 소비하는 것을 꽤 간단하게 만듭니다.그것이 이 간단한 구문의 목적입니다.

더 복잡한 작업인 XML을 생성하는 데는 좋은 도구가 아닙니다.여기서는 처음부터 DOM API 메소드를 사용하는 것이 더 나은 방법입니다.

언급URL : https://stackoverflow.com/questions/19245359/how-to-add-a-child-element-for-xml-in-powershell

반응형