M
Michael Heitland
Hello everybody,
I saw the following code from MS and really have no idea, why the
attributes have to be parsed twice.
Can I omit the second loop?
If I lose some data, please explain it to me with a short XML data
example.
Thanks,
Michael Heitland
XmlTextReader rdr = new XmlTextReader ("data.xml");
while (rdr.Read ()) {
switch (rdr.NodeType) {
case XmlNodeType.Element:
Console.Write ("<" + rdr.Name);
while (rdr.MoveToNextAttribute())
Console.WriteLine (" {0}='{1}'",
rdr.Name, rdr.Value);
Console.Write (">");
//>>> WHY IS THIS SECOND LOOP NECESSARY?
if (rdr.HasAttributes) {
while (rdr.MoveToNextAttribute())
Console.WriteLine (" {0} ", rdr.Value);
}
//<<< WHY IS THIS SECOND LOOP NECESSARY?
break;
case XmlNodeType.Text:
Console.WriteLine (rdr.Value);
break;
case XmlNodeType.EndElement:
Console.WriteLine ("</{0}>", rdr.Name);
break;
}
}
I saw the following code from MS and really have no idea, why the
attributes have to be parsed twice.
Can I omit the second loop?
If I lose some data, please explain it to me with a short XML data
example.
Thanks,
Michael Heitland
XmlTextReader rdr = new XmlTextReader ("data.xml");
while (rdr.Read ()) {
switch (rdr.NodeType) {
case XmlNodeType.Element:
Console.Write ("<" + rdr.Name);
while (rdr.MoveToNextAttribute())
Console.WriteLine (" {0}='{1}'",
rdr.Name, rdr.Value);
Console.Write (">");
//>>> WHY IS THIS SECOND LOOP NECESSARY?
if (rdr.HasAttributes) {
while (rdr.MoveToNextAttribute())
Console.WriteLine (" {0} ", rdr.Value);
}
//<<< WHY IS THIS SECOND LOOP NECESSARY?
break;
case XmlNodeType.Text:
Console.WriteLine (rdr.Value);
break;
case XmlNodeType.EndElement:
Console.WriteLine ("</{0}>", rdr.Name);
break;
}
}