This should work , the main difference is that :
- ReadToFollowing reads data through the whole document which means through all client nodes not just a subtree
To solve this you need to first read to
Message
element and the create a reader for subtree (ReadSubtree
) to keep your data withingClient
nodeusing (XmlReader reader = XmlReader.Create(new StringReader(xmlString), settings)) { while (reader.ReadToFollowing("Client")) { reader.ReadToFollowing("Name"); var message = reader.ReadElementContentAsString(); //advance to <Message> element reader.ReadToFollowing("Messages"); //create sub-tree reader to restrict the scope var typeReader = reader.ReadSubtree(); while (typeReader.ReadToFollowing("Type")) { var value = reader.GetAttribute("value"); var name = reader.GetAttribute("name"); }//everything stops here/// } }