1

powershell で複数レベルの xml を作成しようとしています。私はからのコードから始めました

XML サブエレメントの追加

2 番目のサブレベルを作成する方法がわかりません。作成したいxmlの例を以下に示します。

前もって感謝します、

ゴールドスティーン

<?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>
4

1 に答える 1

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)
}
于 2013-02-26T09:17:04.413 に答える