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

时间:2018-03-09 08:34:08

标签: xml xml-parsing xmlreader skip

我想跳过空的id父节点,并在这种XML文档中移动到不空的id父节点。目前我的程序使用XmlTextReader来读取和处理这个XML。但是某些时候记录id可能是空的,那个时候我想跳过这个记录的父节点,读者应该移动到下一个节点而不读取那个空的id父节点。伙计你有什么想法吗? 请帮帮我!!!

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

`

1 个答案:

答案 0 :(得分:0)

我喜欢使用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();
        }
    }
}