0

私が使用しているコードは次のとおりです。

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 などがどのように機能するはずなのか、そこにダミーに関する適切で詳細な説明はありますか?

4

1 に答える 1

0

Martin Honnenが指摘したように: 適切なソースはmsdn / system.xml です...選択したノード セットの最初のノードに XPathNodeIterator オブジェクトを配置するようにクラスを作成する必要があります。」

これは今では完璧な意味を持ちます-そうでなければ、次のようなものを使用してリストを反復処理するのに問題があるためです:

while (iterator.MoveNext())
{
    //Do Stuff
}

コメント セクションで回答してくださったMartin Honnenに感謝します。そのクラスの要点を完全に見逃していました。

于 2010-12-10T14:34:14.893 に答える