[英]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.