转换XML节点

时间:2015-08-24 12:44:56

标签: xml xslt vbscript

我通过VBScript创建了以下XML节点+子节点,并将其添加到现有的XML文档中。

<list name="Info">
    <item name="ViewName">Page</item>
    <item name="DBField">Text</item>
    <item name="Type">String</item>
</list>

但是在XML文档中,节点插入一行:

<list name="Info"><item name="ViewName">Page</item><item name="DBField">Text</item><item name="Type">String</item></list>

我已经完成了一些关于XSLT的研究,但我无法弄清楚如何正确转换节点或创建一个合适的模板。

1 个答案:

答案 0 :(得分:0)

您正在寻找的内容被称为&#34;漂亮的印刷&#34;。 Robert McMurray在here中描述了VBScript的可能解决方案。简而言之:

inFile  = "C:\path\to\input.xml"
outFile = "C:\path\to\output.xml"

Set fso = CreateObject("Scripting.FileSystemObject")
Set xml = CreateObject("Msxml2.DOMDocument")
Set xsl = CreateObject("Msxml2.DOMDocument")

' Put whitespace between tags. (Required for XSL transformation.)
txt = fso.OpenTextFile(inFile).ReadAll
txt = Replace(txt, "><", ">" & vbCrLf & "<")

' Create an XSL stylesheet for transformation.
stylesheet = _
  "<xsl:stylesheet version=""1.0"" xmlns:xsl=""http://www.w3.org/1999/XSL/Transform"">" & _
  "<xsl:output method=""xml"" indent=""yes""/>" & _
  "<xsl:template match=""/"">" & _
  "<xsl:copy-of select="".""/>" & _
  "</xsl:template>" & _
  "</xsl:stylesheet>"

' Transform the XML.
xsl.loadXML stylesheet
xml.loadXML txt
xml.transformNode xsl
xml.save outFile