2014-10-09 86 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>