如何通过读取空属性节点来跳过 XML Reader?

How do I Skip XML Reader by reading empty attribute node?

我想在这种 XML document.Currently 我的程序使用 XmlTextReader 读取和处理这个 XML 中跳过空 id 父节点并移动到非空 id 父节点。但是有时记录 id 可能是空的,那时我想跳过这个记录父节点并且 reader 应该移动到下一个节点而不读取那个空的 id 父节点。伙计们,你有什么想法吗? 请帮帮我!!!

`<record id="">
  <record><data></data></record>
  <record><data></data></record>
 </record>
 <record id="###">
  <record><data></data></record>
  <record><data></data></record>
 </record>

`

我喜欢结合使用 XmlReader 和 Xml Linq :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;

namespace ConsoleApplication1
{
    class Program
    {
        const string FILENAME = @"c:\temp\test.xml";
        static void Main(string[] args)
        {
            XmlReader reader = XmlReader.Create(FILENAME);

            while (!reader.EOF)
            {
                if (reader.Name != "record")
                {
                    reader.ReadToFollowing("record");
                }
                if (!reader.EOF)
                {
                    XElement record = (XElement)XElement.ReadFrom(reader);
                    string id = (string)record.Attribute("id");
                    if (id.Length > 0)
                    {
                        Console.WriteLine("id = '{0}'", id.ToString());
                    }
                }
            }
            Console.ReadLine();
        }
    }
}