XMmlNodeReader verschluckt meinen ersten ChildNode ?

atothek

Grünschnabel
hey leute,

vielleicht kann mir jemand das erklären. Und zwar hab ich ne ziemlich plaine xmlStruktur wie folgt (nur exemplarisch ohne kommentar)

Code:
<?xml version = "1.0" encoding = "UTF-8" ?>
	<personlist>
		<person fn="Vorname_0" ln="Nachname_0" bd="birthday_0" >Irgendein Kommentar zu der Person Vorname_0 Nachname_0</person>
		<person fn="Vorname_1" ln="Nachname_1" bd="birthday_1" >Irgendein Kommentar zu der Person Vorname_1 Nachname_1</person>
		<person fn="Vorname_2" ln="Nachname_2" bd="birthday_2" >Irgendein Kommentar zu der Person Vorname_2 Nachname_2</person>
		<person fn="Vorname_3" ln="Nachname_3" bd="birthday_3" >Irgendein Kommentar zu der Person Vorname_3 Nachname_3</person>
	</personlist>

alles easy. hab nun ne DataModel Klasse wie folgt

PHP:
public class XmlDataModel{
		
		private System.Xml.XmlDocument xmlData;
		private System.Collections.ArrayList list;
		private int counter = 0;
		
		public XmlDataModel(System.Windows.Forms.Form parent){
			xmlData = new XmlDocument();
			list = new ArrayList();
		}
		
		public void load(string file){
			xmlData.Load(file);
			XmlNodeReader reader = new XmlNodeReader(xmlData.DocumentElement);
			parseData (reader);
			reader.Close();
		}
		
		private void parseData(XmlNodeReader reader){
			while (reader.Read()){				
				if(reader.NodeType == XmlNodeType.Element)
					parsePersonData(reader);				
		    }
		}
		
		private void parsePersonData(XmlNodeReader reader){
			Person p = new Person();
			p.setFirstName(reader.GetAttribute("fn"));
			p.setLastName(reader.GetAttribute("ln"));
			p.setBirthDay(reader.GetAttribute("bd"));
			p.setComment(reader.ReadString());
			p.setID(counter.ToString());
			list.Add(p);
			counter++;
		}
		
		public ArrayList getList(){
			return list;
		}
	}

das abgefahren daran ist, das in der while schleife der 0´te ChildNode übersprungen wird. warum?

vielen dank für jede hilfe ;)

mfg
alex
 
Hi,

so sollte es gehen:
Code:
// while-schleife
if(reader.NodeType == XmlNodeType.Element && reader.Name.ToLower() != "personlist")
 
super auch das funtzt.
danke.

aber ich frag mich ehrlich gesagt warum er den 0 childNode verschluckt wenn ich nicht das documentElement ausschließe. ist doch schon etwas komisch.

mfg
alex
 
Zurück