Reputation: 61
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 & 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 & 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
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