2014-10-09 87 views
1

即时消息使用VB6的“DOMDocument60”,我需要生成一个XML文件,但是我在试图将“Attibutes”添加到子节点时遇到问题。 这是生成我的代码文件:使用VB6将属性写入XML中的子节点

<myroot> 
<MyNode SIZE="10"> 
<SubNode/> 
</MyNode> 
</myroot> 

而这正是我需要的:

<myroot> 
<MyNode SIZE="10"> 
**<SubNode CODE="0000" ID="XXX" OTHER="XXX"/>** 
</MyNode> 
</myroot> 

这是代码(总部设在http://msdn.microsoft.com/en-us/library/ms760231%28v=vs.85%29.aspx):

专用功能CrearDOM( ) Dim dom Set dom = New DOMDocument60 dom.async = False dom.validateOnParse = False dom.resolveE xternals =假 dom.preserveWhiteSpace =真 设置CrearDOM = DOM 端功能

公用Sub Crear_XML()

Set dom = CrearDOM 

' Encabezado de XML 
Set node = dom.createProcessingInstruction("xml", "version='1.0' encoding='iso-8859-1'") 
dom.appendChild node 
Set node = Nothing 

    Dim MyRoot 
    Set MyRoot = dom.createElement("MasRequest") 
MyRoot.appendChild dom.createTextNode(vbNewLine + vbTab) 

    Set node = dom.createElement("MyNode") 
    Set attr = dom.createAttribute("SIZE") 
    attr.Value = 10 
    node.setAttributeNode attr 
    Set attr = Nothing 

     Set Nodo_Sub = dom.createDocumentFragment 
     Nodo_Sub.appendChild dom.createTextNode(vbNewLine + vbTab + vbTab) 
     Nodo_Sub.appendChild dom.createElement("SubNode") 

    node.appendChild Nodo_Droga 

MyRoot.appendChild node 
End Sub 

感谢您的帮助。

+1

请显示您已有的代码,以便它可以更正。 – jac 2014-10-09 19:13:24

+0

对不起,但我是新来的论坛,所以最好重新编辑原始帖子 – Alx 2014-10-09 20:13:31

回答

2

你的问题是你没有添加任何属性后,创建它的子节点。我根据你的代码编写了一个例子,但是我改变了一些,只是因为我习惯于这样做。

Private Function CrearDOM() 
    Dim dom As DOMDocument60 

    Set dom = New DOMDocument60 
    With dom 
     .async = False 
     .validateOnParse = False 
     .resolveExternals = False 
     .preserveWhiteSpace = True 
    End With 
    Set CrearDOM = dom 
End Function 

Public Sub Crear_XML() 
    Dim dom As DOMDocument60 
    Dim MyRoot As IXMLDOMNode 
    Dim node 
    Dim childNode As IXMLDOMNode 
    Dim attr 

    Set dom = New DOMDocument60 
    With dom 
     .async = False 
     .validateOnParse = False 
     .resolveExternals = False 
     .preserveWhiteSpace = True 
    End With 

    Set node = dom.createProcessingInstruction("xml", "version='1.0' encoding='iso-8859-1'") 
    dom.appendChild node 
    Set node = Nothing 

    Set MyRoot = dom.createElement("MasRequest") 
    MyRoot.appendChild dom.createTextNode(vbNewLine + vbTab) 

    Set node = dom.createElement("MyNode") 
    Set attr = dom.createAttribute("SIZE") 
    attr.Value = 10 
    node.setAttributeNode attr 
    Set attr = Nothing 

    'create the child node' 
    Set childNode = dom.createElement("SubNode") 
    Set attr = dom.createAttribute("CODE") 
    attr.Value = "0000" 
    childNode.Attributes.setNamedItem attr 
    Set attr = dom.createAttribute("ID") 
    attr.Value = "XXX" 
    childNode.Attributes.setNamedItem attr 
    Set attr = dom.createAttribute("OTHER") 
    attr.Value = "XXX" 
    childNode.Attributes.setNamedItem attr 
    node.appendChild childNode 
    MyRoot.appendChild node 
    dom.appendChild MyRoot 

End Sub 

上面的代码为我生成了这个。 (我添加了换行和缩进。)

<?xml version="1.0"?> 
<MasRequest> 
    <MyNode SIZE="10"> 
     <SubNode CODE="0000" ID="XXX" OTHER="XXX"/> 
    </MyNode> 
</MasRequest>