Ответ 1
Если вы используете точечную нотацию для перемещения по XML файлу (например, $doc.configuration
), Powershell пытается быть умным в отношении того, что он возвращает.
- Если целевой элемент пуст или содержит только один текст node, 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-документу и всегда иметь список node/node.