2
我有一個powershell腳本,我試圖建立一個冗長的XML文件的導入。我遇到的問題是,運行時,XML的輸出包含所有打開的標記,但從不關閉它們直到結束。儘管我有「WriteEndElement」函數以我想要的順序關閉標籤,但直到所有的「WriteStartElement」標籤都已完成,纔會遵守這些標籤。即,輸出將看起來像powershell XML編寫器嵌套循環
<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()
給出代碼,you'r輸出的結構看起來很明顯。在最低級別打開en關閉的唯一元素是'Members'和'Attribute'。也許如果你想給輸入文件和你想要的例子,更多的人會回答。 – 2013-05-15 19:55:24