Хорошо, вот несколько заметок для размышления. XMLReader
В том смысле, в каком я понимаю, вы используете его (без примера кода), что вы перебираете документ, поскольку XMLReader
только для пересылки и только для чтения.
Из-за этого вам нужно выполнять итерации, пока не найдете нужный вам узел. В приведенном ниже примере я нахожу элемент адреса с надписью «работа» и извлекаю весь этот узел. Затем запросите этот узел, как хотите.
using (var inFile = new FileStream(path, FileMode.Open))
{
using (var reader = new XmlTextReader(inFile))
{
while (reader.Read())
{
switch (reader.NodeType)
{
case XmlNodeType.Element:
if (reader.Name == "Address" && reader.GetAttribute(0) == "Work")
{
// Create a document, which will contain the address element as the root
var doc = new XmlDocument();
// Create a reader, which only will read the substree <Address> ... until ... </Address>
doc.Load(reader.ReadSubtree());
// Use XPath to query the nodes, here the "Name" node
var name = doc.SelectSingleNode("//Address/Name");
// Print node name and the inner text of the node
Console.WriteLine("Node: {0}, Inner text: {1}", name.Name, name.InnerText);
}
break;
}
}
}
}
Редактировать
Сделан пример, который не использует LINQ