我正在使用 VBScript 将子节点添加到现有节点。但问题是输出是这样的
<parentNode>
<childNode/><addedChildNode/><anotherAddedChildNode/></parentNode>
我需要它们是这样的:
<parentNode>
<childNode/>
<addedChildNode/>
<anotherAddedChildNode/>
</parentNode>
我尝试在包含 vbCr
、vbCrLf
、vbLf
或 vbNewLine 的每行后面添加一个文本节点
像这样
Set newLineNode= xmlDoc.createTextNode(vbCrLf)
parentNode.appendChild(newLineNode)
但无论如何,它给了我以下内容:
<parentNode>
<childNode/>
<addedChildNode/>
<anotherAddedChildNode/>
</parentNode>
你认为应该做什么?顺便说一句,子节点的数量可能会达到400个左右。并且该文件可能会被其他用户检查。所以格式很重要。
最佳答案
如果您只是想格式化缩进和新行,请尝试此 UD 功能。
Option Explicit
Function FormatXML(sXML)
Dim sTmp ' Temp String
Dim sOut ' Output string
Dim lv ' level of indentation
Dim oTmp ' Temporary object
' Remove newline characters, tabs
sTmp = sXML
sTmp = Replace(sTmp, vbCrLf, "")
sTmp = Replace(sTmp, vbLf, "")
sTmp = Replace(sTmp, vbCr, "")
sTmp = Replace(sTmp, vbTab, "")
' Process contents split by the ending ">"
sOut = ""
lv = 0
For Each oTmp In Split(sTmp, ">")
oTmp = Trim(oTmp)
If Len(oTmp) > 0 Then
If Len(sOut) > 0 Then sOut = sOut & vbCrLf
If Left(oTmp, 2) = "</" Then
lv = lv - 1
sOut = sOut & String(lv, vbTab) & oTmp & ">"
Else
If Left(oTmp, 1) = "<" And Right(oTmp, 1) <> "/" Then
sOut = sOut & String(lv, vbTab) & oTmp & ">"
lv = lv + 1
Else
sOut = sOut & String(lv, vbTab) & oTmp & ">"
End If
End If
End If
Next
FormatXML = sOut
End Function
示例输入:
" <parentNode> " & vbCrLf & vbTab & "<childNode/> <addedChildNode/><addedChildNode><GrandchildNode>ABC<addedGrandChildNode/></GrandChildNode></addedChildNode><anotherAddedChildNode/></parentNode>"
关于dom - 如何在 XML 文件中添加换行符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31730045/