初学XML 我用 vb6 引用的xml3.0 DOMDocument 类 要实现以下操作如App.Path & "\1.xml"中为- <NODE>
   <NODE key="123"/>
   ...(数据也许会有很多)
   ...
  </NODE>我要在末尾增加一条为
- <NODE>
   <NODE key="123"/>
   ...(数据也许会有很多)
   ...
   <NODE key="4567"/>
  </NODE>中间数据也许会有很多 如果每次操作都遍历结点可能会用很多时间 降低效率
那么我该如何写这段代码呢?
谢谢各位高手不用再贴文章链接了 xml的帖子我几乎都搜索过

解决方案 »

  1.   

    我刚学XML,了解不是很多,能举个例子吗?
      

  2.   


    Option ExplicitPrivate xmlDoc As DOMDocument30
    Private Const strNODE = "NODE"Private Sub Command1_Click()Dim strFileName As String
    Dim Ele As IXMLDOMElement    strFileName = App.Path & "\1.xml"
        
        Set xmlDoc = New DOMDocument30
            xmlDoc.Load strFileName
        Set Ele = xmlDoc.selectSingleNode("NODE")
        
        If Ele Is Nothing Then
           Set Ele = xmlDoc.createElement(strNODE)
        End If
        
        Ele.setAttribute "name", "4567"
        
        xmlDoc.appendChild(xmlDoc.createElement(strNODE)).appendChild Ele
        xmlDoc.save strFileName
        
        
    End Sub这样怎么总是结点不对呢?
      

  3.   

    ption ExplicitPrivate xmlDoc As DOMDocument30
    Private Const strNODE = "NODE"Private Sub Command1_Click()    Dim strFileName As String
        Dim Ele As IXMLDOMElement    strFileName = App.Path & "\1.xml"
        
        Set xmlDoc = New DOMDocument30
            xmlDoc.Load strFileName
        Set Ele = xmlDoc.selectSingleNode("NODE")
        
        If Ele Is Nothing Then
           Set Ele = xmlDoc.createElement(strNODE)
        End If
        
        Ele.setAttribute "name", "4567"
            
        '''xmlDoc.appendChild(xmlDoc.createElement(strNODE)).appendChild Ele
        Dim ParentNode As IXMLDOMNode
        Set ParentNode = xmlDoc.selectSingleNode("NODE")
        ParentNode.appendChild Ele
        
        xmlDoc.Save strFileName
        
        
    End Sub
      

  4.   

    你写的我编译不过
    我写的缺只能生成
    - <NODE name="4567">
      <NODE name="4567" /> 
      </NODE>
    代码是
    Option Explicit
    Private xmlDoc As DOMDocument30
    Private Const strNODE = "NODE"
    Private Sub Command1_Click()
    Dim strFileName As String
    Dim Ele As IXMLDOMElement
        strFileName = App.Path & "\1.xml"
        Set xmlDoc = New DOMDocument30
            xmlDoc.Load strFileName
        Set Ele = xmlDoc.selectSingleNode("NODE")
        
        If Ele Is Nothing Then
           Set Ele = xmlDoc.createElement(strNODE)
        End If
        Ele.setAttribute "name", "4567"
        xmlDoc.save strFileName
    End Sub
      

  5.   

    Set Ele = xmlDoc.selectSingleNode("//NODE")找不到的话,加两个/,这个是xpath的东东
      

  6.   

    问题不是能不能找到,是找到后把父结点替换了..... 应该在根下建立新的
    - <NODE>
       <NODE name="4567" /> 
        <NODE name="4567" /> 
      </NODE>
    现在只能
    - <NODE name="4567">
       <NODE name="4567" /> 
      </NODE>
      

  7.   

    也就是丢失了顶层的
    - <NODE>
      

  8.   

    也就是丢失了顶层的
    - <NODE>
      

  9.   

    这个问题应该很简单吧?有高手知道吗?谁能帮我解决这段代码?100分不够再给.谢谢Private xmlDoc As DOMDocument30
    Private Const strNODE = "NODE"
    Private Sub Command1_Click()
    Dim strFileName As String
    Dim Ele As IXMLDOMElement
        strFileName = App.Path & "\1.xml"
        Set xmlDoc = New DOMDocument30
            xmlDoc.Load strFileName
        Set Ele = xmlDoc.selectSingleNode("NODE")
        If Ele Is Nothing Then
           Set Ele = xmlDoc.createElement(strNODE)
               Ele.setAttribute "name", "4567"
               xmlDoc.appendChild(xmlDoc.createElement(strNODE)).appendChild Ele
        Else
            Dim NewNode As IXMLDOMNode
            Set NewNode = xmlDoc.selectSingleNode("NODE")
            Ele.setAttribute "name", "4567"
        End If
        xmlDoc.save strFileName
    End Sub
    问题不是能不能找到,是找到后把父结点替换了..... 应该在根下建立新的
    - <NODE>
       <NODE name="4567" /> 
        <NODE name="4567" /> 
      </NODE>
    现在只能
    - <NODE name="4567">
       <NODE name="4567" /> 
      </NODE>
    哪位懂XML的帮我一下 谢谢
      

  10.   

    Private xmlDoc As DOMDocument30
    Private Const strNODE = "NODE"Private Sub Command1_Click()    Dim strFileName As String
        Dim Ele As IXMLDOMElement
        Dim NewNode As IXMLDOMNode
        Dim NewNodeAttr As IXMLDOMNode
        
        Set xmlDoc = New DOMDocument30
        strFileName = App.Path & "\1.xml"
        xmlDoc.Load strFileName
        Set Ele = xmlDoc.selectSingleNode("NODE")
        
        If Ele Is Nothing Then
            Set Ele = xmlDoc.createElement(strNODE)
            xmlDoc.appendChild Ele
        Else
            Set NewNode = xmlDoc.createNode(NODE_ELEMENT, strNODE, "") 
            Set NewNodeAttr = xmlDoc.createAttribute("name")
            NewNodeAttr.Text = "4567"
            NewNode.Attributes.setNamedItem NewNodeAttr          
            xmlDoc.documentElement.appendChild NewNode 
        End If
        
        xmlDoc.Save strFileNameEnd Sub
      

  11.   

    Ele.setAttribute "name", "4567"
    ELE已经在已选择的节点上,这样就变成在已选节点下创建了。
      

  12.   

    感谢 conrad_wan(pineapple) 问题解决了 ,我再拿到原来的程序里试试 就给分