Если вы намереваетесь создать новый элемент и добавить эти элементы в качестве дочерних к родительскому, вы должны создать каждого дочернего элемента отдельно и продолжить добавление к родительскому. В своем коде вы перебираете все oop и продолжаете добавлять дочерний элемент List
, но каждый раз с разными значениями. Вместо создания нового тега, к нему добавляется значение.
Когда вы надеваете oop на группы, вы должны создать новый элемент, newXmlgrouplist
. Если вы повторно используете один и тот же, он будет обновлять его каждый раз вместо добавления нового экземпляра. Используйте $newXmlgrouplist = $doc.CreateElement("List")
для создания нового экземпляра каждый раз.
Написал небольшой код, чтобы показать вам, как создавать элементы и добавлять их отдельно
[System.XML.XMLDocument]$doc=New-Object System.XML.XMLDocument
[System.XML.XMLElement]$parent = $doc.CreateElement("Groups")
$parent.SetAttribute("Name", "TestGroup")
$txtGetLists.Items | % {
[System.XML.XMLElement]$list = $doc.CreateElement("List")
$list.SetAttribute("Type", "SecurityGroup")
$list.InnerText = $_
$parent.AppendChild($list)
}
$doc.AppendChild($parent)
и результат xml $doc.InnerXml
is:
<Groups Name="TestGroup">
<List Type="SecurityGroup">Group1</List>
<List Type="SecurityGroup">Group2</List>
<List Type="SecurityGroup">Group3</List>
<List Type="SecurityGroup">Group4</List>
<List Type="SecurityGroup">Group5</List>
</Groups>
ОБНОВЛЕНИЕ
Ваш foreach l oop должен выглядеть следующим образом. Он будет добавлять новый элемент списка в ваши группы при каждой итерации по ним.
$newXmlgroup = $xmlDoc.options.groups.AppendChild($xmlDoc.CreateElement("Group"))
$newXmllocation.SetAttribute("site",$cboOffice.text)
$newXmlgroup.SetAttribute("Name",$cboOffice.text)
foreach($group in $txtGetLists.Items) {
$newXmlgrouplist = $newXmlgroup.AppendChild($xmlDoc.CreateElement("List"))
$newXmlgrouplist.SetAttribute("Type","SecurityGroup")
$newXmlgrouplist.InnerText = $group
}
У него нет выходных данных, поэтому нет необходимости устанавливать $newXmlgroupitem = foreach
Если вы печатаете $newXmlGroup.OuterXml
, он должен показать вам полный xml для групп.