user1275084
user1275084

Reputation: 61

Selecting more than one element from an xml file, and displaying in more than one label

I need help on selecting more than one element from an xml file. I currently only know how to select one, and trying to figure out more than one is hurting my puny kopri. Thanks for your time.

Imports System.Xml

Partial Class ex01_Default
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        'instantiate a reader'
        Dim reader As New XmlTextReader(Server.MapPath("~/ex01/docP.xml"))
        'declare variable to record when a <name> element is found'
        Dim bName As Boolean = False
        'iterate through all of the nodes in the XML document'
        While reader.Read()
            'look at the node type of each node'
            Select Case reader.NodeType
                'if node is a <name> element, remember it'
                Case XmlNodeType.Element
                    If reader.Name = "title" Then
                        bName = True
                    End If


                    'if node is text & previous node was <name>, add it to Label'
                Case XmlNodeType.Text
                    If bName Then
                        lblDisplayXml.Text &= reader.ReadString & "<br/>"
                        bName = False

                    End If
            End Select
        End While
    End Sub
End Class

xml file:

<book_club>
  <book>
    <isbn>0-13-129014-2</isbn>
    <title>JAVA How to Program (6th Ed)</title>
    <author>PJ &amp; HM Deitel</author>
    <price>£39.99</price>
  </book>
  <book>
    <isbn>0-67-232238-2</isbn>
    <title>Teach Yourself UML</title>
    <author>J Schmuller</author>
    <price>£9.99</price>
  </book>
  <book>
    <isbn>0-27-365575-2</isbn>
    <title>Practical Business Systems Development using SSADM</title>
    <author>P Weaver, N Lambrou &amp; M Walkley</author>
    <price>£34.99</price>
  </book>
  <book>
    <isbn>0-67-232422-9</isbn>
    <title>XML Primer Plus</title>
    <author>N Chase</author>
    <price>£32.99</price>
  </book>
  <book>
    <isbn>0-78-972476-6</isbn>
    <title>XML and Java from Scratch</title>
    <author>N Chase</author>
    <price>£19.99</price>
  </book>
  <book>
    <isbn>1234567890</isbn>
    <title>ASP.NET for Dummies</title>
    <author>RUA Dummy</author>
    <price>free!!</price>
  </book>
</book_club>

Upvotes: 1

Views: 205

Answers (1)

test
test

Reputation: 2618

I don't know much about VB because I use C#. I used LinQ since it provides a newer way to read XML, using XDocument class. and This is something I did where I read from a string:

method to return IEnumerable()

XDocument doc = XDocument.Parse(myString);
            var query= from x in doc.Descendants("Book")
                            select new Location
                            {
                                ISBN= Double.Parse(
                                    x.Descendants("isbn").First().Value),
                                Author= Double.Parse(
                                    x.Descendants("author").First().Value) ......
                            };

            return query;

create a class for book

public class Book { public Book () {}

public string Author {
    get; set; 
}
.....

}

Upvotes: 2

Related Questions