有XML内容如下 
<A><B>1</B><B>2</B></A>
<A><B>3</B><B>4</B></A>想取得 <B>1</B><B>2</B> 和 <B>3</B><B>4</B> 
两段数据我用xr.ReadToFollowing("A")
移动到第一个<A>
然后xr.ReadInnerXML();
可是之后xr的游标被放在了第二行的<B>上了
不解。
因为xmlReader是只读向前的 所以没有办法返回<A>了请教我如何可以不用去读B 直接读到A就去A内的内容。

解决方案 »

  1.   


                XmlDocument doc = new XmlDocument();
                doc.Load(@"c:\test.xml");
                XmlNodeList aNodeList = doc.DocumentElement.SelectNodes("A");
                foreach (XmlNode aNode in aNodeList)
                {
                    XmlNodeList bNodeList = aNode.SelectNodes("B");
                    foreach (XmlNode bNode in bNodeList)
                    {
                        //to do
                    }
                }<?xml version="1.0" standalone="yes"?>
    <Record>
    <A> <B>1 </B> <B>2 </B> </A> 
    <A> <B>3 </B> <B>4 </B> </A> 
    </Record>
      

  2.   

    XmlDocument doc = new XmlDocument();
                doc.Load(@"c:\test.xml");
                XmlNodeList aNodeList = doc.DocumentElement.SelectNodes("A");
                foreach (XmlNode aNode in aNodeList)
                {
                    XmlNodeList bNodeList = aNode.SelectNodes("B");
                    foreach (XmlNode bNode in bNodeList)
                    {
                        //to do
                    }
                }
      

  3.   

    我问的是xmlreader 各位。。xmldocument 我知道 不过读取大xml 效率太低了谢谢回答
      

  4.   


    <?xml version="1.0" encoding="utf-8" ?>
    <root>
      <A>
        <B>1</B>
        <B>2</B>
      </A>
      <A>
        <B>3</B>
        <B>4</B>
      </A>
    </root>static void Main(string[] args)
    {
        XmlTextReader reader = new XmlTextReader("abc.xml");
        while (reader.Read())
        {
            if (reader.NodeType == XmlNodeType.Element &&
                reader.Name.Equals("B"))
            {            Console.WriteLine(reader.ReadElementContentAsString());
            }
        }
        reader.Close();
    }
      

  5.   

    或许这个是你要的:static void Main(string[] args)
    {
        XmlTextReader reader = new XmlTextReader("abc.xml");
        while (reader.Read())
        {
            if (reader.NodeType == XmlNodeType.Element &&
                reader.Name.Equals("B"))
            {
                Console.WriteLine(reader.ReadOuterXml());
            }
        }
        reader.Close();
    }