|
xxx
Using XMLTextReader to Read XML Data
by Charles Carroll
The XMLTextReader can be much easier
than the DOM or SAX to locate and filter data. It is ideal for large files since
unlike the DOM it never loads an entire file in memory. Its design is so you can
read through the file and when you notice items you want to grab you respond
appropriately.
Here is code to read any XML File with an XMLTextReader object
and see what types it emits. This toy program displays all the emitted types in
a table for ANY XML FILE in this case the sample file @
http://www.learnasp.com/experiments/data/favebooks.xml
but you can easily run this on any XML file to know exactly what types an
XMLTextReader will emit.
filename=/experiments/booksfave/xmltextreader.aspx
<%@trace="false" debug="true" %>
<%@ Import Namespace="System.XML"%>
<%@ Import Namespace="system.xml.xmlnodetype"%>
<%@ Import Namespace="system.drawing"%>
<script language="VB" runat="server">
Sub Page_Load(S As Object, E As EventArgs)
trace.tracemode=TraceMode.SortByTime
DIM Xmltr1 as XMLTextReader
TRY
Xmltr1=new XMLtextReader(server.mappath("/experiments/data/favebooks.xml"))
DIM strTemp as string
DO WHILE Xmltr1.Read()
trace.warn ("Value", Xmltr1.Value)
'trace.write ("Text", Xmltr1.Text)
strTemp = "NodeType=" & Xmltr1.NodeType.ToString()
IF Xmltr1.Name<>string.empty
strTemp &= ";Name=" & Xmltr1.Name
END IF
IF Xmltr1.LocalName<>string.empty
strTemp &= ";LocalName=" & Xmltr1.LocalName
END IF
IF Xmltr1.NamespaceURI<>string.empty
strTemp &= ";NamespaceURI=" & Xmltr1.NamespaceURI
END IF
trace.write("",strTemp)
TableCellsAdd(XMLtr1.Value,strTemp)
IF Xmltr1.hasattributes
trace.write ("attributecount", Xmltr1.attributecount)
DO WHILE Xmltr1.MoveTonextAttribute()
trace.write ("value;name",Xmltr1.name & ";" & Xmltr1.value)
TableCellsAdd("attribute named <b>" & XMLtr1.Name & "</b>;value=<font color='red'>" & XMLtr1.Value & "</font>","")
LOOP
END IF
LOOP
CATCH ex1 as exception
FINALLY
Xmltr1.Close()
END TRY
End Sub
Sub TableCellsAdd(strParm1 as string,strParm2 as string)
static intCellcounter as integer
DIM cl1,cl2 as tablecell
DIM rw1 as tablerow
cl1=new tablecell
cl2=new tablecell
cl1.controls.add(new literalcontrol(strParm1))
cl2.controls.add(new literalcontrol(strParm2))
rw1=new tablerow
rw1.cells.add(cl1)
rw1.cells.add(cl2)
intCellCounter+=1
IF intCellCounter MOD 2 = 0
rw1.BackColor=Color.FromName("Silver")
END IF
tblXMLDetails.rows.add(rw1)
End Sub
</script>
<html><head>
<title>XML Demo</title>
</head>
<body bgcolor="#FFFFFF">
<form runat="server">
<ASP:placeholder id="plcErr" runat="server" />
See The Trace For More Details
<AsP:Table id="tblXMlDetails" runat="server" />
<ASP:placeholder id="plcEndofPage" runat="server" />
</form>
</body></html>
 |  |  |
 |
There are many worthy charities!!. But perhaps help starving children in Africa or South America AND help Charles too.
a $5 tip buys him lunch at McDonalds,
a $20 tip buys his kid Hitoshi a new computer game,
a $39 tip buys his daughter Michiko a few nice outfits.
See our donor list.
|  |
 |  |  |
|
|
|
|