В PowerShell v3, я создал объект XmlDocument так:Как обновить значение узла в System.Xml.XmlDocument?
[System.Xml.XmlDocument]$xmldoc = new-object System.Xml.XmlDocument
$xmldoc.Load($xmlfile)
После некоторой обработки, я хочу, чтобы позволить пользователю обновить значение узла в $xmlfile
.
С учетом имени узла и нового значения, которое необходимо назначить, как мне обновить $xmldoc
?
$node = StartBoundry
$newvalue = StringValue
Я понимаю, что можно сохранить, как это:
$xmldoc.Save($xmlfile)
Необработанные XML выглядит следующим образом:
<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.4" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
<RegistrationInfo>
<Author>MYDOMAIN\user.name</Author>
<Description>my description</Description>
</RegistrationInfo>
<Triggers>
<TimeTrigger>
<Repetition>
<Interval>PT2M</Interval>
<StopAtDurationEnd>false</StopAtDurationEnd>
</Repetition>
<StartBoundary>2015-09-18T09:29:14</StartBoundary>
<Enabled>true</Enabled>
<RandomDelay>PT3S</RandomDelay>
</TimeTrigger>
</Triggers>
...
Я экспериментировал с XPath, как это:
$ns = @{'ns'='http://schemas.microsoft.com/windows/2004/02/mit/task'}
$xml = Select-Xml -Xml $xmldoc -XPath "//ns:Task/ns:Triggers/ns:TimeTrigger/ns:StartBoundary" -Namespace $ns
$xml.Node.Value = $newvalue
Но как получить путь, если все я h ave - имя узла? Есть ли способ сделать это, или мне нужно перебирать все элементы до тех пор, пока не найду имя узла?
Так что мне не нужен полный путь. Я думаю, что строка не так сложна, чтобы составить все. Я нашел это введение полезным: http://www.techrepublic.com/article/use-xpath-to-locate-information-in-xml-documents/ полную спецификацию XPath здесь: http://www.w3.org/TR/XPath / – jott19