如果您使用点符号来导航 XML 文件(例如$doc.configuration
),Powershell 会尝试巧妙地处理它返回的内容。
- 如果目标元素为空或仅包含单个文本节点,则 PS 将返回一个
String
.
- 如果目标元素包含文本节点以外的子节点,它将返回一个
XmlElement
.
- 如果存在多个目标元素,它将返回一个
Object[]
,其中每个单独的数组元素再次受这些规则的约束,例如,它将是 aString
或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 文档,并始终返回一个节点/节点列表。
有人可能会争论这种行为的敏感性,但事实上,它使得使用(结构合理的)XML 变得非常简单——例如从配置文件或 API 响应中读取值等任务。这就是这个简单语法的目的。
它不是创建XML的好工具,这是一项更复杂的任务。从一开始就使用 DOM API 方法是更好的方法。