By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
443,693 Members | 1,936 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 443,693 IT Pros & Developers. It's quick & easy.

XML reader error

P: n/a
I asked for a script that can read info inside a specific xml tag and
someone gave me this example.

XmlReader reader = new XmlTextReader( filename );
while ( reader.Read() )
{
if ( reader.NodeType == XmlNodeType.Element )
{
string val;
switch ( reader.Name )
{
case "first-name":
val = reader.ReadElementString();
// do something
break;
case "last-name":
val = reader.ReadElementString();
// do something
break;
default: break;
}
}
}

This script worked fine until I tried to open an xml file with nested
tags.

for example the xml looks like this
<book>
<genre>
<action>ABC</action>
<bio>DFK</bio>
</genre>
</book>

I would like the result to be this when i select to read the <genre>
tag

<action>ABC</action>
<bio>DFK</bio>

but it gives me this error

Exception: System.Xml.XmlException: 'Element' is an invalid node type

is there anyway to avoid this?
"Aaron" <ku*****@yahoo.com> wrote in message
news:b4**************************@posting.google.c om...
I need to make a script that reads the info inside a specific tag.

for example the xml file looks like this

<book genre="novel" publicationdate="1967" ISBN="0-201-63361-2">
<title>The Confidence Man</title>
<author>
<first-name>Herman</first-name>
<last-name>Melville</last-name>
</author>
<price>11.99</price>
</book>

and say i seleted the <first-name> tag I want the output to be
Herman

THe closest example i could find is this, but it reads everything in
the xml. i want to read only the tags i choose.
http://samples.gotdotnet.com/quickst...adXMLFile.aspx


You can use XmlTextReader to do this. Something like (c# code, but
it
could be any .Net language)

XmlReader reader = new XmlTextReader( filename );
while ( reader.Read() )
{
if ( reader.NodeType == XmlNodeType.Element )
{
string val;
switch ( reader.Name )
{
case "first-name":
val = reader.ReadElementString();
// do something
break;
case "last-name":
val = reader.ReadElementString();
// do something
break;
default: break;
}
}
}

-derek
--
This posting is provided "AS IS" with no warranties, and confers no
rights.
Use of included script samples are subject to the terms specified at
http://www.microsoft.com/info/cpyright.htm.
Nov 17 '05 #1
Share this Question
Share on Google+
1 Reply


P: n/a
Dim objXMLDocument As New XmlDocument()

objXMLDocument.Load(filename)

objXMLDocument.GetElementsByTagName("genre")

process that tag

or use recursion to go through all your XML document

"Aaron" <ku*****@yahoo.com> wrote in message
news:b4**************************@posting.google.c om...
I asked for a script that can read info inside a specific xml tag and
someone gave me this example.

XmlReader reader = new XmlTextReader( filename );
while ( reader.Read() )
{
if ( reader.NodeType == XmlNodeType.Element )
{
string val;
switch ( reader.Name )
{
case "first-name":
val = reader.ReadElementString();
// do something
break;
case "last-name":
val = reader.ReadElementString();
// do something
break;
default: break;
}
}
}

This script worked fine until I tried to open an xml file with nested
tags.

for example the xml looks like this
<book>
<genre>
<action>ABC</action>
<bio>DFK</bio>
</genre>
</book>

I would like the result to be this when i select to read the <genre>
tag

<action>ABC</action>
<bio>DFK</bio>

but it gives me this error

Exception: System.Xml.XmlException: 'Element' is an invalid node type

is there anyway to avoid this?
"Aaron" <ku*****@yahoo.com> wrote in message
news:b4**************************@posting.google.c om...
I need to make a script that reads the info inside a specific tag.

for example the xml file looks like this

<book genre="novel" publicationdate="1967" ISBN="0-201-63361-2">
<title>The Confidence Man</title>
<author>
<first-name>Herman</first-name>
<last-name>Melville</last-name>
</author>
<price>11.99</price>
</book>

and say i seleted the <first-name> tag I want the output to be
Herman

THe closest example i could find is this, but it reads everything in
the xml. i want to read only the tags i choose.
http://samples.gotdotnet.com/quickst...adXMLFile.aspx


You can use XmlTextReader to do this. Something like (c# code, but
it
could be any .Net language)

XmlReader reader = new XmlTextReader( filename );
while ( reader.Read() )
{
if ( reader.NodeType == XmlNodeType.Element )
{
string val;
switch ( reader.Name )
{
case "first-name":
val = reader.ReadElementString();
// do something
break;
case "last-name":
val = reader.ReadElementString();
// do something
break;
default: break;
}
}
}

-derek
--
This posting is provided "AS IS" with no warranties, and confers no
rights.
Use of included script samples are subject to the terms specified at
http://www.microsoft.com/info/cpyright.htm.

Nov 17 '05 #2

This discussion thread is closed

Replies have been disabled for this discussion.