只选择的childNodes后等于我OuterXML我使用的代码是:我InnerXML与创建XPathNodeIterator
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 - 这正是我从开始就期望的。
我做错了什么?有没有一个很好的和详细的解释dummys在那里如何System.Xml等应该功能?
那么文档http://msdn.microsoft.com/en-us/library/system.xml.xpath.xpathnodeiterator.aspx清楚地说:“由XPathNavigator类返回的XPathNodeIterator对象不位于第一个节点上在选定的一组节点中,必须调用XPathNodeIterator类的MoveNext方法来将XPathNodeIterator对象定位到所选节点集合中的第一个节点上。“所以我不确定为什么你希望迭代器处于有意义的状态,而不用调用MoveNext或者使用for-each。 – 2010-12-10 14:08:28
@MartinHonnen - 你应该把它作为答案,而不是评论! – 2010-12-10 14:17:43