如果你有這樣的結構:
<Services>
<Service>
<Name>My service</Name>
<Label>Availability</Label>
</Service>
</Services>
,並想添加一個節點<Source>
,使它看起來像這樣:
<Services>
<Service>
<Name>My service</Name>
<Label>Availability</Label>
<Source>
<Composition/>
<ServiceRef>My service ref</ServiceRef>
</Source>
</Service>
</Services>
你可以去了解它是這樣的:
# load XML file
[xml]$doc = Get-Content "C:\service.xml"
# create node <Composition>
$comp = $doc.CreateNode('element', 'Composition', '')
# create node <ServiceRef>
$sref = $doc.CreateNode('element', 'ServiceRef', '')
$desc = $doc.CreateTextNode('My service ref')
$sref.AppendChild($desc)
# create node <Source> and append child nodes <Composition> and <ServiceRef>
$src = $doc.CreateNode('element', 'Source', '')
$src.AppendChild($comp)
$src.AppendChild($sref)
# append node <Source> to node <Service>
$svc = $doc.SelectSingleNode('//Service')
$svc.AppendChild($src)
# save XML file
$doc.Save("C:\service.xml")
編輯:您可以循環在幾個<Service>
節點像這樣的東西(簡體):
$doc.SelectNodes('//Service') | % {
$comp = $doc.CreateNode('element', 'Composition', '')
$sref = $doc.CreateNode('element', 'ServiceRef', '')
$src = $doc.CreateNode('element', 'Source', '')
$src.AppendChild($comp)
$src.AppendChild($sref)
$_.AppendChild($src)
}
我不知道你是什麼意思通過「創造第二個低等級」。你想修改結構嗎?爲此你必須改變DTD。或者你只是想將一個子節點追加到某個節點?這可以這樣做(一般):選擇一個節點,創建一個新元素,將新元素添加到選定節點。 – 2013-02-25 18:34:57
所以在服務標籤內是源標籤和子標籤。我無法修改上一篇文章中的代碼來生成上面的xml代碼。我熟悉PowerShell,但是對xml編碼來說是新的。 – Goldstien 2013-02-26 08:18:37