我最近有一個理由將我們的構建腳本包含到XML配置文件的創建中。我能想到的最直接的方法就是將XML內容作爲字符串硬編碼到腳本中,然後簡單地創建一個文件並將該XML字符串寫入該文件(正確命名等)。有沒有更優雅或有效的方式來做到這一點?從腳本生成XML文件
我正在修改的構建腳本是用VBScript編寫的。如果你考慮串
我最近有一個理由將我們的構建腳本包含到XML配置文件的創建中。我能想到的最直接的方法就是將XML內容作爲字符串硬編碼到腳本中,然後簡單地創建一個文件並將該XML字符串寫入該文件(正確命名等)。有沒有更優雅或有效的方式來做到這一點?從腳本生成XML文件
我正在修改的構建腳本是用VBScript編寫的。如果你考慮串
,你可以使用的XmlWriter以避免打印字符串。這將使編寫格式良好的XML文檔變得容易很多。
您可以在VBScript在這裏找到免費的示例代碼
我的最終解決方案:適用於通過DIVO提到XMLWriter的(使用它幾乎原樣,除了一個或兩個變化因爲這個腳本是在客戶端上運行的)。還修改了here的代碼以漂亮地打印XML(以便在輸出到文件時可讀):
Function XMLToString(Nodes)
dim retStr
retStr = "<?xml version=""1.0"" encoding=""utf-8"" ?>"
XMLToString = retStr & vbNewLine & NodesToString(Nodes, 0)
End Function
Function NodesToString(Nodes, Indent)
Dim xNode
Dim retStr
retStr = ""
For Each xNode In Nodes
Select Case xNode.nodeType
Case 1: ' NODE_ELEMENT
If xNode.nodeName <> "#document" Then
' change DisplayAttrs_(xNode, Indent + 2) to
' DisplayAttrs_(xNode, 0) for inline attributes
retStr = retStr & VBNewLine & strDup(" ", Indent) & "<" & xNode.nodeName & AttributesToString(xNode) & ">"
If xNode.hasChildNodes Then
retStr = retStr & NodesToString(xNode.childNodes, Indent + 2)
End If
retStr = retStr & VBNewLine & strDup(" ", Indent) & "</" & xNode.nodeName & ">"
Else
If xNode.hasChildNodes Then
retStr = retStr & NodesToString(xNode.childNodes, Indent + 2)
End If
End If
Case 3: ' NODE_TEXT
retStr = retStr & VBNewLine & strDup(" ", Indent) & xNode.nodeValue
End Select
Next
NodesToString = retStr
End Function
Function AttributesToString(Node)
Dim xAttr, res
res = ""
For Each xAttr In Node.attributes
res = res & " " & xAttr.name & "=""" & xAttr.value & """"
Next
AttributesToString = res
End Function
Function strDup(dup, c)
Dim res, i
res = ""
For i = 1 To c
res = res & dup
Next
strDup = res
End Function