【问题标题】:How do I Skip XML Reader by reading empty attribute node?如何通过读取空属性节点来跳过 XML Reader?
【发布时间】:2018-03-09 08:34:08
【问题描述】:

我想在这种 XML 文档中跳过空 id 父节点并移动到非空 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>

`

【问题讨论】:

  • 张贴父母。我很难用一小部分 xml 给出这个解决方案。
  • @jdweng Parants 标签就像“”。

标签: xml xml-parsing xmlreader skip


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多