我使用的代码是:
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 等应该如何运作的假人的详细解释?