我正在尝试在powershell中创建一些多级xml。我从
的代码开始我无法理解如何创建第二个子级别。我想要创建的xml的一个例子如下。
提前致谢,
Goldstien
<?xml version="1.0" ?>
<!DOCTYPE svcengine SYSTEM "service.dtd">
<Services>
<Service>
<Name>My service</Name>
<Label>Availability</Label>
<Source>
<Composition/>
<ServiceRef>My service ref</ServiceRef>
</Source>
</Service>
</Services>
答案 0 :(得分:2)
如果你有这样的结构:
<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)
}