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