簡體   English   中英

使用XMLReader讀取大型XML文檔以將信息解析為一個類

[英]Using XMLReader to read large XML documents to parse the information into a class

我一直在將XDocument與LINQ結合使用以XML來加載xml文件並填充我的類。

但是現在我要確保我的程序能夠處理所有大小的XML文檔,這意味着我需要使用XML Reader,這時我無法動手處理XMLReader來填充我的類。

目前,我有以下課程要填充:

 public class DataRecord
  {
    private List<Fields> field = new List<Fields>();

    public string ID { get; set; }
    public string TotalLength { get; set; }

    public List<Fields> MyProperty
    {
      get { return field; }
      set { field = value; }
    }

  }

  internal class Fields
  {
    public string name { get; set; }
    public string startByte { get; set; }
    public string length { get; set; }
  }

}

我一直在嘗試切換語句以強制xmlreader提供我的數據以填充該類。 例如:

using (XmlReader reader = XmlReader.Create(filename))
  {
    while (reader.Read())
    {
      switch (reader.NodeType)
      {
        case XmlNodeType.Element:
          switch (reader.Name)
          {
            case "DataRecord":
              var dataaa = new dataclass.DataRecord();
              break;
          }
         break;
      }
    }
  }

但是正如我所說的,這是一個例子,我已經尋找年齡嘗試尋找答案,但是我感到困惑。 希望有人可以幫助我們解決我的問題。

您可以使用XmlReader在文檔中移動,但是可以使用XElement.加載每個元素XElement.

這是一個簡短的示例:

using System;
using System.Xml;
using System.Xml.Linq;

class Test
{
    static void Main()
    {
        using (var reader = XmlReader.Create("test.xml"))
        {
            while (reader.ReadToFollowing("foo"))
            {
                XElement element = XElement.Load(reader.ReadSubtree());
                Console.WriteLine("Title: {0}", element.Attribute("title").Value);
            }
        }
    }
}

使用示例XML:

<data>
  <foo title="x" /><foo title="y">asd</foo> <foo title="z" />
</data>

(只是為了表明它可以處理具有內容的元素,它們之間沒有空格的元素以及它們之間有空格的元素而略有矛盾。)

然后顯然,在循環中,您將使用XElement進行任何操作-如果您已經有了從XElement創建類的實例的方法,則可以調用它,使用該對象,然后遠。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM