Click here to Skip to main content
15,867,453 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
I am just starting with XMLTextReader so apologies if the answer is obvious.

I am trying to extract attributes from an XML file, which appears to have the same element name wrapped within itself. This extract shows the problem:
HTML
<osgb:heightabovedatum xmlns:osgb="#unknown">
<osgb:heightabovedatum>13.1<osgb:heightabovedatum>
<osgb:accuracyofheightabovedatum>1.0<osgb:accuracyofheightabovedatum>
<osgb:heightabovedatum>

It reads the first "osgb:heightAboveDatum" which has no value, but then appears to skip the second line and so misses the value there. It reads the next line "osgb:accuracyOfHeightAboveDatum" OK presumably because it has a different element?

Any help appreciated!

The above XML didn't format correctly - it should be:

HTML
<osgb:heightAboveDatum>
<osgb:heightAboveDatum>13.1</osgb:heightAboveDatum>
<osgb:accuracyOfHeightAboveDatum>1.0m</osgb:accuracyOfHeightAboveDatum>
<osgb:heightAboveDatum>


I'm using XMLTextReader to get the data from each element and this is the code for the heightAboveDatum element:


If GMLReader.Name.ToString = "osgb:HeightAboveDatum" And GMLReader.NodeType <> XmlNodeType.EndElement Then
heightAboveDatum = Trim(GMLReader.ReadString())
End If

It's returning an empty string as I presume it's not reading the child node containing the data value.
Posted
Updated 16-Sep-12 23:55pm
v3
Comments
Zoltán Zörgő 14-Sep-12 15:28pm    
The xml snippet you have tried to post is missing!
Sergey Alexandrovich Kryukov 14-Sep-12 16:07pm    
If looks like you forgot to escape HTML entities, which you could do using "encode" item on top of edit control, that's why the garbage at the end.

And normally, nothing skips. You could screw up things in your code. How about a code sample?
--SA

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900