Populate a Treeview from an XML File

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Jack

    Populate a Treeview from an XML File

    Hello,

    I am trying to populate a Treeview from a XML File.

    XML File:

    <Papers>
    <Paper>

    <PaperName>Ne w York Times</PaperName>

    <Dealership>

    <DealershipName >Tom Jones Ford</DealershipName>

    <DealershipZIP> 77036</DealershipZIP>

    </Dealership>

    <Dealership>

    <DealershipName >Jim's Ford</DealershipName>

    <DealershipZIP> 77056</DealershipZIP>

    </Dealership>

    </Paper>

    <Paper>

    <PaperName>Hous ton Post</PaperName>

    <Dealership>

    <DealershipName >Mark Smith Ford</DealershipName>

    <DealershipZIP> 72036</DealershipZIP>

    </Dealership>

    <Dealership>

    <DealershipName >Tom's Ford</DealershipName>

    <DealershipZIP> 79056</DealershipZIP>

    </Dealership>

    <Dealership>

    <DealershipName >Wills's Accura</DealershipName>

    <DealershipZIP> 78256</DealershipZIP>

    </Dealership>

    </Paper>

    </Papers>



    I would like to have the Paper Name with the Dealership name as the child
    nodes.



    Thanks for any help,



    Jack


  • Peter Proost

    #2
    Re: Populate a Treeview from an XML File

    Hi you can use a recursive loop for that, just loop over all document nodes
    and check if they have childnodes:

    Hth

    Greetz Peter


    Imports System.Xml


    Private Sub Form1_Load(ByVa l sender As Object, ByVal e As System.EventArg s)
    Handles MyBase.Load

    Dim dom As New XmlDocument
    dom.Load("your xmlfile")

    TreeView1.Nodes .Clear()
    TreeView1.Nodes .Add(New TreeNode(dom.Do cumentElement.N ame))
    Dim tNode As New TreeNode
    tNode = TreeView1.Nodes (0)

    AddNode(dom.Doc umentElement, tNode)
    TreeView1.Expan dAll()

    End Sub

    Private Sub AddNode(ByRef inXmlNode As XmlNode, ByRef inTreeNode As
    TreeNode)
    Dim xNode As XmlNode
    Dim tNode As TreeNode
    Dim nodeList As XmlNodeList
    Dim i As Long


    If inXmlNode.HasCh ildNodes() Then
    nodeList = inXmlNode.Child Nodes
    For i = 0 To nodeList.Count - 1
    xNode = inXmlNode.Child Nodes(i)
    inTreeNode.Node s.Add(New TreeNode(xNode. Name))
    tNode = inTreeNode.Node s(i)
    AddNode(xNode, tNode)
    Next
    Else
    inTreeNode.Text = (inXmlNode.Oute rXml).Trim
    End If
    End Sub

    --
    Programming today is a race between software engineers striving to build
    bigger and better idiot-proof programs, and the Universe trying to produce
    bigger and better idiots. So far, the Universe is winning.



    "Jack" <jouin@webfoxma il.com> schreef in bericht
    news:uB5AFW5zFH A.1040@TK2MSFTN GP14.phx.gbl...[color=blue]
    > Hello,
    >
    > I am trying to populate a Treeview from a XML File.
    >
    > XML File:
    >
    > <Papers>
    > <Paper>
    >
    > <PaperName>Ne w York Times</PaperName>
    >
    > <Dealership>
    >
    > <DealershipName >Tom Jones Ford</DealershipName>
    >
    > <DealershipZIP> 77036</DealershipZIP>
    >
    > </Dealership>
    >
    > <Dealership>
    >
    > <DealershipName >Jim's Ford</DealershipName>
    >
    > <DealershipZIP> 77056</DealershipZIP>
    >
    > </Dealership>
    >
    > </Paper>
    >
    > <Paper>
    >
    > <PaperName>Hous ton Post</PaperName>
    >
    > <Dealership>
    >
    > <DealershipName >Mark Smith Ford</DealershipName>
    >
    > <DealershipZIP> 72036</DealershipZIP>
    >
    > </Dealership>
    >
    > <Dealership>
    >
    > <DealershipName >Tom's Ford</DealershipName>
    >
    > <DealershipZIP> 79056</DealershipZIP>
    >
    > </Dealership>
    >
    > <Dealership>
    >
    > <DealershipName >Wills's Accura</DealershipName>
    >
    > <DealershipZIP> 78256</DealershipZIP>
    >
    > </Dealership>
    >
    > </Paper>
    >
    > </Papers>
    >
    >
    >
    > I would like to have the Paper Name with the Dealership name as the child
    > nodes.
    >
    >
    >
    > Thanks for any help,
    >
    >
    >
    > Jack
    >
    >[/color]


    Comment

    • Jack

      #3
      Re: Populate a Treeview from an XML File

      Hello,

      Thanks for you help, I'm trying to get just the Paper Names and the
      Dealership Names to appear and nothing else.

      Can this be done?

      Thanks in for any help,

      Jack

      "Peter Proost" <pproost@nospam .hotmail.com> wrote in message
      news:uQdqTm7zFH A.720@TK2MSFTNG P15.phx.gbl...[color=blue]
      > Hi you can use a recursive loop for that, just loop over all document
      > nodes
      > and check if they have childnodes:
      >
      > Hth
      >
      > Greetz Peter
      >
      >
      > Imports System.Xml
      >
      >
      > Private Sub Form1_Load(ByVa l sender As Object, ByVal e As
      > System.EventArg s)
      > Handles MyBase.Load
      >
      > Dim dom As New XmlDocument
      > dom.Load("your xmlfile")
      >
      > TreeView1.Nodes .Clear()
      > TreeView1.Nodes .Add(New TreeNode(dom.Do cumentElement.N ame))
      > Dim tNode As New TreeNode
      > tNode = TreeView1.Nodes (0)
      >
      > AddNode(dom.Doc umentElement, tNode)
      > TreeView1.Expan dAll()
      >
      > End Sub
      >
      > Private Sub AddNode(ByRef inXmlNode As XmlNode, ByRef inTreeNode As
      > TreeNode)
      > Dim xNode As XmlNode
      > Dim tNode As TreeNode
      > Dim nodeList As XmlNodeList
      > Dim i As Long
      >
      >
      > If inXmlNode.HasCh ildNodes() Then
      > nodeList = inXmlNode.Child Nodes
      > For i = 0 To nodeList.Count - 1
      > xNode = inXmlNode.Child Nodes(i)
      > inTreeNode.Node s.Add(New TreeNode(xNode. Name))
      > tNode = inTreeNode.Node s(i)
      > AddNode(xNode, tNode)
      > Next
      > Else
      > inTreeNode.Text = (inXmlNode.Oute rXml).Trim
      > End If
      > End Sub
      >
      > --
      > Programming today is a race between software engineers striving to build
      > bigger and better idiot-proof programs, and the Universe trying to produce
      > bigger and better idiots. So far, the Universe is winning.
      >
      >
      >
      > "Jack" <jouin@webfoxma il.com> schreef in bericht
      > news:uB5AFW5zFH A.1040@TK2MSFTN GP14.phx.gbl...[color=green]
      >> Hello,
      >>
      >> I am trying to populate a Treeview from a XML File.
      >>
      >> XML File:
      >>
      >> <Papers>
      >> <Paper>
      >>
      >> <PaperName>Ne w York Times</PaperName>
      >>
      >> <Dealership>
      >>
      >> <DealershipName >Tom Jones Ford</DealershipName>
      >>
      >> <DealershipZIP> 77036</DealershipZIP>
      >>
      >> </Dealership>
      >>
      >> <Dealership>
      >>
      >> <DealershipName >Jim's Ford</DealershipName>
      >>
      >> <DealershipZIP> 77056</DealershipZIP>
      >>
      >> </Dealership>
      >>
      >> </Paper>
      >>
      >> <Paper>
      >>
      >> <PaperName>Hous ton Post</PaperName>
      >>
      >> <Dealership>
      >>
      >> <DealershipName >Mark Smith Ford</DealershipName>
      >>
      >> <DealershipZIP> 72036</DealershipZIP>
      >>
      >> </Dealership>
      >>
      >> <Dealership>
      >>
      >> <DealershipName >Tom's Ford</DealershipName>
      >>
      >> <DealershipZIP> 79056</DealershipZIP>
      >>
      >> </Dealership>
      >>
      >> <Dealership>
      >>
      >> <DealershipName >Wills's Accura</DealershipName>
      >>
      >> <DealershipZIP> 78256</DealershipZIP>
      >>
      >> </Dealership>
      >>
      >> </Paper>
      >>
      >> </Papers>
      >>
      >>
      >>
      >> I would like to have the Paper Name with the Dealership name as the child
      >> nodes.
      >>
      >>
      >>
      >> Thanks for any help,
      >>
      >>
      >>
      >> Jack
      >>
      >>[/color]
      >
      >[/color]


      Comment

      Working...