Innertext 并不总是 return xml 元素的内容

Innertext not always return the content of the xml element

我在 Powershell 中遇到 XML 解析的问题。

我正在尝试获取 XML 元素的内容,但取决于是否设置了 "type" 属性,获取内容的方式会有所不同。

示例:

$xml = [xml] @'
<elem>
    <id type="integer">1</id>
    <name>test</name>
</elem>
'@

$content = $xml.elem.id
Write-Host "content : $content"
$content = $xml.elem.id.InnerText
Write-Host "content: $content"
$content = $xml.elem.name
Write-Host "content: $content"
$content = $xml.elem.name.InnerText
Write-Host "content: $content"

结果如下:

content: System.Xml.XmlElement
content: 1
content: test
content:

所以有时我有一个 XmlElement 对象,有时有一个原始对象。

是否有一种简单而独特的方法来获取 Xml 元素的内容? 或者我们可以告诉 XML 解析器在解析时忽略 "type" 属性吗?

考虑使用 XPath 和 Select-XML。结果将是一个匹配对象。它的 Node 属性 可用于访问 XPath 查询指定的实际 XML 元素。像这样,

(select-xml '/elem/id' $xml).node."#text"
# Output
1
(select-xml '/elem/name' $xml).node."#text"
# Output
test