Solved

How do I create a module to parse a XML file and then populate differnt drop down menues?

Posted on 2009-03-30
4
184 Views
Last Modified: 2013-11-26
Hello everybody,

I am very new to XML specially when it comes to software developing. I've work with it before but in web development. A frind of mine asked me to create a program using VB.NET to control his store and I thought that using XML was the best choice because of performance and it's easy to update.

I've created a XML file which holds the items he sells but trully, I don't know how to create a function inside a module to handle that file and then use it to populate different fields (text boxes, combo boxes, etc.) in a form.

The structure I'm using within XML is this:

<?xml version="1.0" encoding="utf-8"?>
<Items>
  <Item>
    <ID>10001</ID>
    <Name>Item 1</Name>
    <Type>Food</Type>
    <Weight>31</Weight>
    <Price>9.99</Price>
  </Item>
  <Item>
    <ID>10002</ID>
    <Name>Item 2</Name>
    <Type>Tool</Type>
    <Weight>700</Weight>
    <Price>39.99</Price>
  </Item>
</NewData>

I would like for example, to be able to display all food items in a grid or whatever, only when the Food cathegory is selected in a dropdown menu.

How can I do this?

Thanks in advance!
0
Comment
Question by:Caracena
  • 2
4 Comments
 
LVL 2

Expert Comment

by:devlinb
ID: 24022492
You could write the xml file into a dataset then assign the datasource of the grid to this dataset:
Dim ds As New DataSet

ds.WriteXml("C:\filename.xml")

DataGridView1.DataSource = ds

Open in new window

0
 
LVL 27

Accepted Solution

by:
nmarun earned 500 total points
ID: 24022692
Here's what I have:

my xml:

<?xml version="1.0" encoding="utf-8"?>

<Items>

  <Item>

    <ID>10001</ID>

    <Name>Item 1</Name>

    <Type>Food</Type>

    <Weight>31</Weight>

    <Price>9.99</Price>

  </Item>

  <Item>

    <ID>10002</ID>

    <Name>Item 2</Name>

    <Type>Tool</Type>

    <Weight>700</Weight>

    <Price>39.99</Price>

  </Item>

  <Item>

    <ID>10003</ID>

    <Name>Item 3</Name>

    <Type>Food</Type>

    <Weight>15</Weight>

    <Price>9.99</Price>

  </Item>

  <Item>

    <ID>10004</ID>

    <Name>Item 4</Name>

    <Type>Tool</Type>

    <Weight>55</Weight>

    <Price>250</Price>

  </Item>

</Items>
 

my aspx:

<asp:DropDownList ID="ddlTest" runat="server" AutoPostBack="true"

    onselectedindexchanged="ddlTest_SelectedIndexChanged" />

<br />
 

<asp:Repeater ID="rptTest" runat="server" >

    <ItemTemplate>

    ID: <%#((XmlNode)Container.DataItem)["ID"].InnerText%>

    <br />

    Name: <%#((XmlNode)Container.DataItem)["Name"].InnerText%>

    <br />

    Weight: <%#((XmlNode)Container.DataItem)["Weight"].InnerText%>

    <br />

    Price: <%#((XmlNode)Container.DataItem)["Price"].InnerText%>

    <br />

    </ItemTemplate>

</asp:Repeater>
 

my code-behind:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)

    If Not IsPostBack Then

        Dim xmlDocument As New XmlDocument()

        xmlDocument.Load(Server.MapPath("SiteMapNode.xml"))

        Dim types As XmlNodeList = xmlDocument.SelectNodes("//Items/Item/Type")

        For i As Integer = 0 To types.Count - 1

            Dim li As New ListItem(types(i).InnerText, types(i).InnerText)

            If Not ddlTest.Items.Contains(li) Then

                ddlTest.Items.Add(li)

            End If

        Next

    End If

End Sub
 

Protected Sub ddlTest_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs)

    Dim xmlDocument As New XmlDocument()

    xmlDocument.Load(Server.MapPath("SiteMapNode.xml"))

    Dim nodes As XmlNodeList = xmlDocument.SelectNodes("/Items/Item[Type='" & ddlTest.SelectedItem.Value & "']")

    rptTest.DataSource = nodes

    rptTest.DataBind()

    

End Sub

Open in new window

0
 
LVL 27

Expert Comment

by:nmarun
ID: 24022715
Make sure you add this line in your aspx page just below the <%@ Page.. declaration:
<%@ Import Namespace="System.Xml"%>
and
Imports System.Xml
line in the code-behind file.
0

Featured Post

IT, Stop Being Called Into Every Meeting

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

Join & Write a Comment

Welcome my friends to the second instalment and follow-up to our Minify and Concatenate Your Scripts and Stylesheets (http://www.experts-exchange.com/Programming/Languages/.NET/ASP.NET/A_4334-Minify-and-Concatenate-Your-Scripts-and-Stylesheets.html)…
This article describes relatively difficult and non-obvious issues that are likely to arise when creating COM class in Visual Studio and deploying it by professional MSI-authoring tools. It is assumed that the reader is already familiar with the cla…
In this seventh video of the Xpdf series, we discuss and demonstrate the PDFfonts utility, which lists all the fonts used in a PDF file. It does this via a command line interface, making it suitable for use in programs, scripts, batch files — any pl…
You have products, that come in variants and want to set different prices for them? Watch this micro tutorial that describes how to configure prices for Magento super attributes. Assigning simple products to configurable: We assigned simple products…

760 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

27 Experts available now in Live!

Get 1:1 Help Now