XML의 요소 경로에 변수를 사용하는 경우 CDATA가 포함 된 XML 파일을 읽는 데 어려움을 겪고 있습니다. (참고 : 이것은 PowerShell을 사용하여 XML 파일에서 CDATA를 읽는 방법을 기반으로 합니다. )
<list>
<topic>
<SubTopic>
<topicTitle>Test</topicTitle>
<HtmlHead><![CDATA[<br>randomHTMLhere</br>]]></HtmlHead>
</SubTopic>
<SubTopic2>
<topicTitle>Test2</topicTitle>
<HtmlHead><![CDATA[<br>randomHTMLhere2</br>]]></HtmlHead>
</SubTopic2>
</topic>
</list>
[String]$xmlsource = "C:\PowerShell_scripts\xmlsource.xml"
[xml]$XmlContent = get-content $xmlsource
#These methods work but the Paths are HARD-CODED
Write-host "`r`nUsing HARD-CODED Paths"
$XmlContent.list.topic.SubTopic.HtmlHead.'#cdata-section'
$XmlContent.list.topic.SubTopic.HtmlHead.InnerText
$XmlContent.list.topic.SubTopic2.HtmlHead.InnerText
#But if the path is given in a variable, I get nothing.
Write-host "`r`nUsing `$pathToElement (returns blank line)"
[String]$pathToElement = 'list.topic.SubTopic.HtmlHead'
$XmlContent.$pathToElement.InnerText #This return a blank line
#Insult to injury
#This kinda works but to parse the path to fit in the 'GetElementsByTagName' method would be clunky, inflexible and would still return the CDATA from *both* 'HtmlHead' elements.
Write-host "`r`nwith GetElementsByTagName(`$var)"
[String]$ElementName= 'HtmlHead'
$XmlContent.GetElementsByTagName($ElementName).'#cdata-section'
Write-host "`r`nwith GetElementsByTagName()"
$XmlContent.GetElementsByTagName('HtmlHead').'#cdata-section'
$ pathToElement는 특수 데이터 유형으로 캐스팅해야합니까?
참고 : Xpath는 XML에 대한 쿼리 언어이므로 위의 질문을 수정했습니다.
$XmlContent.list.topic.SubTopic.HtmlHead
list라는 속성을 찾은 다음 해당 반환 값에서 'topic'을 찾은 다음 해당 반환 값에서 ... 등을 찾습니다.
$XmlContent.$XpathToElement
이름이 지정된 하나의 속성을 조회하려고 list.topic.SubTopic.HtmlHead
하지만 찾지 못합니다.
'list.topic.SubTopic.HtmlHead'가 XPath 표현식에 적합한 형식이라고 생각하지 않습니다. 다음과 같이 할 수 있습니다.
$node = Select-Xml -xml $XmlContent -XPath '/list/topic/SubTopic/HtmlHead' | select -expand node
$node.InnerText
편집 : 그리고
Select-Xml -xml $xml -XPath '/list/topic//HtmlHead'
SubTopic 및 SubTopic2에 대한 HtmlHeads를 모두 가져옵니다.
내 코드 블록에서 자동 생성 된 PS 도움말 링크 (사용 가능한 경우) :
Select-Xml
(모듈에서 Microsoft.PowerShell.Utility
)select
Select-Object
(모듈 내 Microsoft.PowerShell.Utility
) 의 별칭입니다.이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다