本帖最后由 bcrun 于 2010-07-30 22:25:53 编辑

解决方案 »

  1.   

    我知道用这个,但是具体的就不会用了
    能不能给段具体的代码啊,谢谢了
    对XML操作不熟悉的
      

  2.   


        Dim objXmlDoc As New DOMDocument
        Dim objXmlNode As IXMLDOMNode
        Dim objNewElem As IXMLDOMElement
        
        objXmlDoc.Load "e:\test.xml"
        Set objNewElem = objXmlDoc.createElement("BIN") '.createNode(NODE_TEXT, "BIN", "")
        objNewElem.Text = "New_Value"
        
        Set objXmlNode = objXmlDoc.getElementsByTagName("BINSUM")(0)
        objXmlNode.appendChild objNewElem
        
        objXmlDoc.save "e:\new.xml"
      

  3.   

    本帖最后由 bcrun 于 2010-07-30 22:27:03 编辑
      

  4.   

    你的xml文件有问题,有两种解决办法:
    一、用记事本打开你的xml文件,另存为unicode或utf-8编码格式。
    二、用记事本打开你的xml文件,修改声明部分为<?xml version="1.0" encoding="gb2312"?>
    即用<?xml version="1.0" encoding="gb2312"?>替换<?xml version="1.0" ?>,然后保存。原因是ansi编码格式的xml文件+缺省声明<?xml version="1.0" ?>是不支持汉字的。
    要想知道你的xml文件有没有错误的简单办法是用IE打开它,如果有错,网页上会报错。<?xml version="1.0" encoding="gb2312"?>
    <Data>
      <HEADER>
          <test>1.8</test> <!-- test这里是可以修改的,节点为固定的 -->
      </HEADER>
      <LIMITS>
          <BIN>1</BIN> <!-- 可能有多个bin节点,只要求添加,初始时可以没有一个,只有能添加即可 -->
          <BIN>4</BIN>
          <BIN>3</BIN>
      </LIMITS>
      <DATA1>
          <BINSUM>
              <BIN>ds</BIN> <!-- 可能有多个bin节点,只要求添加,初始时可以没有一个,只有能添加即可 -->
              <BIN>2</BIN>
              <BIN>3</BIN>
          </BINSUM>
      </DATA1>
    </Data>
      

  5.   

    以下示例,在代码doc.save xmlFile下一行设置断点,打开保存的xml文档看看文档的变化:Option ExplicitPrivate Sub Command1_Click()
        
        Dim doc As DOMDocument
        Dim mode As IXMLDOMProcessingInstruction
        Dim node As IXMLDOMNode
        Dim root As IXMLDOMElement
        Dim lement As IXMLDOMElement
        Dim nodeData
        Dim i As Long
        Dim xmlFile As String
        
        xmlFile = "d:\xmlTest.xml"
        
        '创建一个只有根节点的xml文件
        Set doc = New DOMDocument
        Set root = doc.createElement("Data")
        Set doc.documentElement = root
        Set mode = doc.createProcessingInstruction("xml", "version='1.0' encoding='gb2312'")
        Call doc.insertBefore(mode, doc.childNodes(0))
        doc.save xmlFile
        '-----------------------------------------------------------------------------------
        '打开以上的xml文档添加节点
        Set doc = New DOMDocument
        doc.Load xmlFile
        Set root = doc.documentElement
        nodeData = Array("HEADER", "LIMITS", "DATA1")
        For i = 0 To UBound(nodeData)
            Set lement = doc.createNode(1, nodeData(i), "")
            root.appendChild lement
        Next
        doc.save xmlFile
        '----------------------------------------------------------------------------------
        '打开以上的xml文档定位添加节点
        Set doc = New DOMDocument
        doc.Load xmlFile
        Set node = doc.documentElement.getElementsByTagName("LIMITS")(0)
        nodeData = Array(1, 2, 4)
        For i = 0 To UBound(nodeData)
            Set lement = doc.createNode(1, "BIN", "")
            lement.Text = nodeData(i)
            node.appendChild lement
        Next
        doc.save xmlFile
        '-----------------------------------------------------------------------------------
        '再打开以上的xml文档定位添加节点
        Set doc = New DOMDocument
        doc.Load xmlFile
        Set node = doc.documentElement.getElementsByTagName("HEADER")(0)
        Set lement = doc.createNode(1, "test", "")
        lement.Text = 1.8
        node.appendChild lement
        '已经存在BIN节点,再增加新的BIN节点
        Set node = doc.documentElement.getElementsByTagName("LIMITS")(0)
        nodeData = Array(100, 2000, 40)
        For i = 0 To UBound(nodeData)
            Set lement = doc.createNode(1, "BIN", "")
            lement.Text = nodeData(i)
            node.appendChild lement
        Next
        doc.save xmlFile
        
    End Sub
      

  6.   

    谢谢你的代码,可以使用的,不过生成的XMl是一行的,能不能换行呢?
      

  7.   

    ...............不过生成的XMl是一行的,能不能换行呢?
    -----------------------
    你用文本看xml? 用IE打开就不是一行的了....