我可以在MSXML2.IXMLDOMAttribute节点之间添加换行符或其他格式吗?

时间:2015-08-12 20:22:01

标签: xml excel vba ixmldomdocument

我在将数据从Excel VBA DOMDocument导出到XML时尝试添加空格。

我可以在普通节点和任何类型的元素之间成功完成这些操作,但我想在元素的两个属性之间添加换行符和一些空格来缩进。

实施例: 得到这个......

<elements>
<element id="idvalue">
    <subelement id="idvalue" item-type="10" store-category="3" purchase-limit="1" min-roster-space="4" ui-headerbg="tex.icon" ui-icon="tex.coolicon">

看起来像这样......

<elements>
<element id="idvalue">
    <subelement id="idvalue" item-type="10" store-category="3" 
    purchase-limit="1" min-roster-space="4" ui-headerbg="tex.icon" 
    ui-icon="tex.coolicon">

使用与此类似的代码,使用普通元素执行此操作非常简单:

    parentElement.InsertBefore _
        parentElement.OwnerDocument.createTextNode(strElementFormat), _
        parentElement.ChildNodes.Item(0)

    parentElement.appendChild _
        parentElement.OwnerDocument.createTextNode(strLastElementFormat)

我尝试将属性迭代为节点,在使用父元素之前插入等等。

似乎将第二个文本元素视为属性值的一部分,如下所示:

    <item id="2024_MINNOW_CONVERSION" item-type="10" store-category="3" purchase-limit="1&#xA;            " min-roster-space="4">

使用此代码段:

Sub formatXMLAttributes(currentElement As MSXML2.IXMLDOMElement, _
                    toolXMLDoc As MSXML2.DOMDocument60, _
                    Indent As Integer)
    Dim attributeNode As MSXML2.IXMLDOMNode, _
        intIndex As Integer, _
        strElementFormat As String

    intIndex = 0
    strElementFormat = vbCrLf & Space$(Indent * 4)
    For Each attributeNode In currentElement.Attributes
        intIndex = intIndex + 1
        If intIndex Mod 4 = 0 And currentElement.Attributes.Length > 4 Then
           attributeNode.appendChild _
           attributeNode.OwnerDocument.createTextNode(strElementFormat)
        End If
    Next
End Sub

有什么想法?我怀疑它是不受支持的

0 个答案:

没有答案