如何使用 Powershell 访问 CDATA 中的 XML 数据

How to access XML data inside CDATA with Powershell

我是 Powershell 的新手,如果这看起来是一个简单的问题,请多多包涵。我正在尝试访问 CDATA 标签内的信息,但我似乎做不到。这是 xml 文件:

example.xml

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<fooMaster>
    <fooFirst>Hello there</fooFirst>
    <fooCDATA>
        <![CDATA[<?xml version="1.0" encoding="UTF-8"?>
        <fooChild>
            <data>
                Hello everyone
            </data>
        </fooChild>]]>
    </fooCDATA>
</fooMaster>

这是我的 ps1 文件:

脚本.ps1

$XMLfile = 'example.xml'
[XML]$file = Get-Content $XMLfile

write-Host "fooFirst contains: " $file.fooMaster.fooFirst
write-Host "data contains: " $file.fooMaster.fooCDATA."#cdata-section".fooChild.data

Read-Host -Prompt "Press Enter to exit"

$file.fooMaster.fooFirst 完美运行并显示 Hello there,但是该行下方的行不起作用。我在某处读到,添加 .#cdata-section 会在 CDATA 标签内显示信息,确实如此!但它显示所有内容就好像它是纯文本一样,有没有办法不仅可以访问 CDATA 中的信息,还可以像常规 xml.

一样使用它

要访问 CDATA 中的元素,请进入另一个变量:

[xml]$cdata = $file.fooMaster.fooCDATA."#cdata-section"
write-Host "data contains: $($cdata.fooChild.data.tostring().trim())