我正在使用VBScript将表单数据写入XML文件:
Set xmlDoc = CreateObject("Microsoft.XMLDOM")
Set objRoot = xmlDoc.CreateElement("root")
xmlDoc.AppendChild objRoot
Set objRecord = xmlDoc.CreateElement("document")
objRoot.AppendChild objRecord
Set objElement = xmlDoc.CreateElement("field")
objElement.SetAttribute "level", "system"
objElement.SetAttribute "name", "Document Filename with Full Path"
objElement.SetAttribute "value", "C:\out\test.pdf"
objrecord.AppendChild(objElement)
Set objIntro = xmlDoc.CreateProcessingInstruction("xml", "version='1.0'")
xmlDoc.InsertBefore objIntro, xmlDoc.ChildNodes(0)
Call ParseAndSave("C:\Temp\test.xml", xmlDoc)
Function ParseAndSave(filePath, xmlDoc)
Set xmlWriter = CreateObject("MSXML2.MXXMLWriter")
Set xmlReader = CreateObject("MSXML2.SAXXMLReader")
Set xmlStream = CreateObject("ADODB.Stream")
xmlStream.Open
xmlStream.Charset = "UTF-8"
xmlWriter.Output = xmlStream
xmlWriter.Indent = True
xmlWriter.Encoding = "UTF-8"
Set xmlReader.ContentHandler = xmlWriter
Set xmlReader.DTDHandler = xmlWriter
Set xmlReader.ErrorHandler = xmlWriter
xmlReader.PutProperty "http://xml.org/sax/properties/lexical-handler", xmlWriter
xmlReader.PutProperty "http://xml.org/sax/properties/declaration-handler", xmlWriter
xmlReader.Parse xmlDoc
xmlWriter.Flush
xmlStream.SaveToFile filePath, 2
xmlStream.Close
Set xmlStream = Nothing
Set xmlWriter = Nothing
Set xmlReader = Nothing
End Function
它可以工作,但是输出的格式不像XML文件中的期望:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<root>
<document>
<field level="system" name="Document Filename with Full Path" value="C:\out\test.pdf"/>
</document>
</root>
预期结果。在名称和值之间向左对齐的所有新行都有空格
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<root>
<document>
<field level = "system" name = "Document Filename with Full Path" value = "C:\out\test.pdf"/>
</document>
</root>
我需要在VBScript中将节点添加到XML文件中,而不会覆盖较旧的节点。