3

インポート用の長い XML ファイルを作成しようとしている powershell スクリプトがあります。私が抱えている問題は、実行時に XML への出力にすべての開始タグが含まれているが、最後までそれらが閉じられないことです。必要な順序でタグを閉じる「WriteEndElement」関数がありますが、すべての「WriteStartElement」タグが終了するまでそれらを尊重しません。つまり、出力は次のようになります

<1>
  <2>
    <3>
      <4>
      </4>
    </3>
  </2>
</1>

しかし、私のコードでは、3 の終了は 4 の開始の前に来るはずです。
私のスクリプト:

$groups = gc "./groups.txt"
$regions = gc "./regions.txt"
$types = gc "./Types.txt"

$output = "./Workgroups.txt"
$xmlOut = "c:\wgIMPORT.xml"
$wgExt = 60001


# Create The Document
$XmlWriter = New-Object System.XMl.XmlTextWriter($xmlOut,$Null)
# Set The Formatting
$xmlWriter.Formatting = "Indented"
$xmlWriter.Indentation = "4"
# Write the XML Decleration
$xmlWriter.WriteStartDocument()
# Set the XSL
$XSLPropText = "type='text/xsl' href='style.xsl'"
$xmlWriter.WriteProcessingInstruction("xml-stylesheet", $XSLPropText)
# Write Root Element
$xmlWriter.WriteStartElement("Scenarios")
# Write the Document
$xmlWriter.WriteStartElement("Scenario")
$xmlWriter.WriteElementString("Schedule","Immediate")



for($i=0;$i -lt $groups.Count;$i++){
    for($j=0;$j -lt $regions.Count;$j++){
        for($k=0;$k -lt $types.Count;$k++){ 
            #$groups[$i] + "_" + $regions[$j] + "_" + $types[$k] >> $output
            $wg = $groups[$i] + "_" + $regions[$j] + "_" + $types[$k]
            $xmlWriter.WriteStartElement("WorkgroupCommand")
            $XmlWriter.WriteAttributeString("Name","$wg")
            $XmlWriter.WriteAttributeString("Extension","$wgExt")
            $XmlWriter.WriteAttributeString("HasQueue","1")
            $xmlWriter.WriteStartElement("Attributes")
            $xmlWriter.WriteStartElement("Attribute")
            $XmlWriter.WriteAttributeString("Value","206")
            $xmlWriter.WriteEndElement # end Attribute
            $xmlWriter.WriteElementString("Value","TestSkill")
                $xmlWriter.WriteEndElement # end Attributes
            $xmlWriter.WriteStartElement("Members")
            $xmlWriter.WriteElementString("Member","tonkaadmin")
            $xmlWriter.WriteEndElement # end  </Members> Command
            $xmlWriter.WriteEndElement # end Workgroup Command
            $wgExt++
        }
    }
}    

$xmlWriter.WriteEndElement # end Scenario
# Write Close Tag for Root Element
$xmlWriter.WriteEndElement # end Scenarios
# End the XML Document
$xmlWriter.WriteEndDocument() 
# Finish The Document
$xmlWriter.Finalize
$xmlWriter.Flush
$xmlWriter.Close()
4

1 に答える 1

3

使用して

$xmlWriter.WriteEndElement()

それ以外の

$xmlWriter.WriteEndElement

あなたの問題を解決する必要があります

于 2013-07-19T06:57:55.797 に答える