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
198 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:Cesar Aracena
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 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

Resolve Critical IT Incidents Fast

If your data, services or processes become compromised, your organization can suffer damage in just minutes and how fast you communicate during a major IT incident is everything. Learn how to immediately identify incidents & best practices to resolve them quickly and effectively.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Wouldn’t it be nice if you could test whether an element is contained in an array by using a Contains method just like the one available on List objects? Wouldn’t it be good if you could write code like this? (CODE) In .NET 3.5, this is possible…
Real-time is more about the business, not the technology. In day-to-day life, to make real-time decisions like buying or investing, business needs the latest information(e.g. Gold Rate/Stock Rate). Unlike traditional days, you need not wait for a fe…
This is a high-level webinar that covers the history of enterprise open source database use. It addresses both the advantages companies see in using open source database technologies, as well as the fears and reservations they might have. In this…
Michael from AdRem Software explains how to view the most utilized and worst performing nodes in your network, by accessing the Top Charts view in NetCrunch network monitor (https://www.adremsoft.com/). Top Charts is a view in which you can set seve…

707 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