如题,最好能对应的用DataSet或者XmlDocument写一点简单的程序,解析和生成一个类似于下面我的xml文件格式:<?xml version="1.0"?>
<interface  NAME="验证请求(输入模式)">
    <PCODE>3300</PCODE>
    <PNAME>非税代收</PNAME>
    <COCODE>1000</COCODE>
    <CONAME>验证请求(输入模式)</CONAME>
    <DOWN>
          <NODE>
           <itemno>1</itemno>
         <child/>
           </NODE>
           <NODE>
           <itemno>2</itemno>
           <child>
           <itemno>3</itemno>
<child/>
</child>
         </NODE>
     </DOWN>
     <UP>
          <NODE>
           <itemno>1</itemno>
         <child/>
          </NODE>
     </UP>
</interface>
我省略了一部分没什么用的部分,另外,在节点中,可能有多层子节点,层数是未知的;解析的时候要取得每个节点的父节点的itemno,如果没有父节点则默认为空,否则返回父节点的itemno,因为我要建立treeview。   首先做解析吧,解析生成一个treeview,我对DateSet和XmlDocument类了解都比较少,不知道应该用哪个做处理,也缺乏类似的例子给我参考,先在这里谢谢各位能人。

解决方案 »

  1.   

    XML格式有点乱,我再发一次吧<?xml version="1.0"?>
    <interface  NAME="验证请求(输入模式)">
        <PCODE>3300</PCODE>
        <PNAME>非税代收</PNAME>
        <COCODE>1000</COCODE>
        <CONAME>验证请求(输入模式)</CONAME>
        <DOWN>
              <NODE>
                  <itemno>1</itemno>
                  <child/>
               </NODE>
               <NODE>
                  <itemno>2</itemno>
                  <child>
                      <itemno>3</itemno>
                      <child/>
                   </child>
             </NODE>
         </DOWN>
         <UP>
              <NODE>
                  <itemno>1</itemno>
                  <child/>
              </NODE>
         </UP>
    </interface>
      

  2.   

    用 XMLDOM,忘了哪个对象了,有个 SelectNodes 方法就是可以搜索节点的。
    可以用 XPath 语法,搜一下 MSDN: XPath
      

  3.   


    Dim xml_document  As DOMDocument
    Dim child_node   As IXMLDOMElement
    set xml_document  = new DOMDocument
    xml_document.Load "xxx.xml"       '载入xml
    set child_node = xml_document.selectSingleNode("节点名")  '查找节点
      

  4.   

    e.g.
    Private Sub Command1_Click()
        Dim xmlDoc As New DOMDocument
        Dim xmlRootElement As IXMLDOMElement
        Dim xmlError As IXMLDOMParseError
        Dim Success As Boolean
        Dim strR As String
        xmlDoc.async = False
        xmlDoc.validateOnParse = True    strPara = "http://192.168.0.1/YYYY/services/MMMwebservice?method=GetR&ConditionStr= admin"
        Success = xmlDoc.Load(strPara)
        If Success = True Then
            Set xmlRootElement = xmlDoc.documentElement
            strR = xmlRootElement.Text
            Debug.Print strR
        Else
            MsgBox "读取失败!"
        End If
        Set xmlRootElement = Nothing
        Set xmlError = xmlDoc.parseError
        '……
        Set xmlError = Nothing
    End Sub
      

  5.   

    DateSet和XmlDocument是.net中的对象,vb6没有...
    vb6中解析xml,引用microsoft xml, v6.0,如上面大家说的用DOMDocument对象...
      

  6.   

    谢谢各位,我正在看MSDN里的Xpath;
    可能是我没说清楚,我想解析的是能够判断node结点是否有子结点,这里的node结点可以是最下层的节点,也可以有下层node结点,这个我事先不知道,需要解析xml文件。我不知道的就是如何解析这些不确定是否有下层节点的元素,并能够建立父子节点的关系,就是得到当前节点的父节点的itemno信息
      

  7.   

    比如我想定位到<DOWN>下面的第一个NODE元素,怎么做?还有MoveTo..()类似这样的函数有两个函数模型,一个有两个参数,我觉得我不是要用那个;另外一个只有一个参数是XPathNodeType。如果我想用MoveToChild()移动到第一个node节点的第一个子结点,那个type参数应该写什么?谢谢
      

  8.   

    XPath通过方括号指定条件
    http://msdn.microsoft.com/en-us/library/ms256086.aspx
      

  9.   


    Dim xml_document  As DOMDocument
    Dim child_node   As IXMLDOMElement
    set xml_document  = new DOMDocument
    xml_document.Load "xxx.xml"       '载入xml
    set child_node = xml_document.selectSingleNode("NODE")  '查找节点
    这样子取得所有的node节点之后,我怎么在不知道node层次的情况下遍历这些节点呢?就是说我想知道一个节点是否有子结点,以及怎么移动到他的子节点或者移动到他的父节点。
      

  10.   

    说了要用 selectNodes,这样才能返回一组列表,可以循环。selectSingleNode 只会返回第一个符合条件的节点。用 hasChildNodes() 函数进行判定。
    parent、firstChild、nextSibling、previousSibling 这些属性直接望文生义的