Код, который я использую:
string m_myXML = "<parent>\n" +
" <child1>\n"+
" <child2a>\n"+
" <list1 attrib=\"one\" />\n"+
" <list2 attrib=\"two\" />\n"+
" </child2a>\n"+
" <child2b>\n"+
" <list1 attrib=\"one\" />\n"+
" <list2 attrib=\"two\" />\n"+
" </child2b>\n"+
" </child1>\n"+
"</parent>";
XmlDocument doc = new XmlDocument();
doc.LoadXml(m_myXML);
XPathNavigator nav = doc.CreateNavigator();
XPathExpression expr;
expr = nav.Compile("/*/*"); //Select all children of top level parents
XPathNodeIterator iterator = nav.Select(expr);
Результатом является то, что iterator.Current.InnerXml совпадает с iterator.Current.OuterXml, и это то же самое, что и исходный m_myXML. Когда я перемещаю итератор к следующему с помощью iterator.MoveNext (), он указывает на первого child1 - что я и ожидал от него в самом начале.
Я что-то не так делаю? Есть ли хорошее и подробное объяснение для чайников, как System.Xml и т. Д. Должны функционировать?