С помощью PowerShell я хочу добавить несколько подэлементов в дерево XML.
Я знаю, чтобы добавить элемент ADD ONE, я знаю, чтобы добавить один или несколько атрибутов, но я не понимаю, как добавить несколько элементов.Добавление подэлементов XML
Один из способов: write a sub-XML tree as text
Но я не могу использовать этот метод, потому что элементы не добавляются сразу.
Чтобы добавить один элемент, я делаю это:
[xml]$xml = get-content $nomfichier
$newEl = $xml.CreateElement('my_element')
[void]$xml.root.AppendChild($newEl)
работает отлично. Это даст мне это дерево XML:
$xml | fc
class XmlDocument
{
root =
class XmlElement
{
datas =
class XmlElement
{
array1 =
[
value1
value2
value3
]
}
my_element = <-- the element I just added
}
}
Теперь я хочу добавить подэлемент в 'my_element'. Я использую подобный метод:
$anotherEl = $xml.CreateElement('my_sub_element')
[void]$xml.root.my_element.AppendChild($anotherEl) <-- error because $xml.root.my_element is a string
[void]$newEl.AppendChild($anotherEl) <-- ok
$again = $xml.CreateElement('another_one')
[void]$newEl.AppendChild($again)
Это дает этот XML-дерево (частично показан):
my_element =
class XmlElement
{
my_sub_element =
another_one =
}
те атрибуты, не подэлементы.
Суб-элементы будут отображаться как это:
my_element =
[
my_sub_element
another_one
]
Вопрос: Как добавить несколько суб-элементов, по одному за раз?
Способ намного лучшего решения, чем то, что я нашел до сих пор! И чище. Благодарю. –
Это работает хорошо. Моя проблема заключается в том, что он много пишет на консоли. Отладка показывает, что это происходит в этой строке: $ xmlSubElt.AppendChild ($ xmlSubText) , если я пишу «> $ null» до конца. Что-то еще выписано Могу ли я заблокировать его? – Tomi
Замените '> $ null' на' | из-null'. – JPBlanc