我需要在XML的末尾写,但不能正常工作

时间:2019-03-13 14:59:32

标签: xml vbscript

我正在使用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文件中,而不会覆盖较旧的节点。

0 个答案:

没有答案