Проблема в том, что код ищет только элемент p1
(xmlTextReader.Name == "p1"
в условии if).
Я изменил код из Примеры XmlTextReader в соответствии с вашими потребностями. Если вы также хотите получить текстовые значения, вам нужно проверить, является ли узел типом XmlNodeType.Text
. Затем вы можете использовать xmlTextReader.Name
, чтобы получить имя тега, и xmlTextReader.Text
, чтобы получить внутренний текст.
Если вы хотите только читать дочерние элементы элемента <pb>
, тогда вы можете использовать ReadToDescendant
.
Приведенный ниже код должен прочитать весь ваш xml и распечатать его на консоли:
// read to 'pb' element and then read it's children
xmlTextReader.ReadToDescendant("pb");
while (xmlTextReader.Read())
{
switch (xmlTextReader.NodeType)
{
case XmlNodeType.XmlDeclaration:
Console.WriteLine("<?xml version='1.0' encoding='uft-8'?>");
break;
case XmlNodeType.Element:
Console.WriteLine("<{0}>", xmlTextReader.Name);
break;
case XmlNodeType.Text:
Console.WriteLine(xmlTextReader.Value);
break;
case XmlNodeType.EndElement:
Console.WriteLine("</{0}>", xmlTextReader.Name);
break;
}
}
// remember to close the reader
if (xmlTextReader != null)
xmlTextReader.Close();