Попытка добавить элемент в существующий файл XML с помощью PowerShell. Я рассмотрел несколько примеров, и мой скрипт «add» работает, но он неуместен в элементе.
Образец XML, который я использую:
<?xml version="1.0" encoding="UTF-8"?>
<config version="" id="" rev="" marker="">
<plugins>
<local>
<plugin class="LDAPPlugin">
<config version="0.2">
<users>
<search>
<priority>1</priority>
<suspended>false</suspended>
<scope>ALL</scope>
<orgName>AdmOrg</orgName>
<filter>LDAPFilter1</filter>
</search>
</users>
</config>
</plugin>
</local>
</plugins>
</config>
Я хочу добавить дополнительный элемент <search></search>
в вышеупомянутый файл XMl. Используя этот код, я был наполовину успешен:
$xmlPath = "C:\productionXML.xml"
$userSearchFilter = "C:\inputData.csv"
$doc = [XML](Get-Content -Path $xmlPath)
foreach($e in (Import-Csv -Path $userSearchFilter))
{
[STRING]$count = $doc.config.plugins.local.plugin.config.users.search.Count + 1
$element = $doc.config.plugins.local.plugin.config.users.search[0].clone()
$element.priority = $count
$element.suspended = $e.userSuspended
$element.scope = $e.userScope
$element.orgName = $e.userOrgMappingAttribute
$element.filter = $e.userFilter
$doc.DocumentElement.AppendChild($element)
}
$doc.Save("C:\newProductionXML.xml")
Когда я выполняю сценарий, элемент добавляется, но в нижней части XML, например так:
<?xml version="1.0" encoding="UTF-8"?>
<config version="" id="" rev="" marker="">
<plugins>
<local>
<plugin class="LDAPPlugin">
<config version="0.2">
<users>
<search>
<priority>1</priority>
<suspended>false</suspended>
<scope>ALL</scope>
<orgName>AdmOrg</orgName>
<filter>LDAPFilter1</filter>
</search>
</users>
</config>
</plugin>
</local>
</plugins>
</config>
<search>
<priority>1</priority>
<suspended>false</suspended>
<scope>ALL</scope>
<orgName>AdmOrg</orgName>
<filter>NewLDAPFilter</filter>
</search>
Я запустил этот код для "менее сложных" XML-файлов, и тогда он выполняет именно то, что предполагалось, но, когда я запускаю его для нужного мне XML-файла, он помещает дополнительный элемент в корень XML-файла. Пожалуйста, прости меня за отсутствие точного языка в отношении XML, я не часто работаю с XML таким образом. Любая помощь с благодарностью.