C 讀取大型Xml檔案

2022-02-18 17:04:00 字數 2225 閱讀 7352

這篇部落格將介紹在c#中如何讀取資料量很大的xml檔案。請看下面的xml檔案,

<?

xml version="1.0" encoding="utf-8"

?>

<

catalog

>

<

book

id="bk101"

>

<

author

>gambardella, matthew

author

>

<

title

>c# developer

title

>

<

genre

>computer

genre

>

<

price

>44.95

price

>

<

publish_date

>2000-10-01

publish_date

>

<

description

>

with xml.

description

>

book

>

<

book

id="bk102"

>

<

author

>ralls, kim

author

>

<

title

>midnight rain

title

>

<

genre

>fantasy

genre

>

<

price

>5.95

price

>

<

publish_date

>2000-12-16

publish_date

>

<

description

>

a former architect battles corporate zombies,

an evil sorceress, and her own childhood to become queen

of the world.

description

>

book

>

catalog

>

使用linq to xml會很方便的處理這個xml檔案,例如我們要獲取book的數量

xelement doc = xelement.load("

book.xml");

var books = from book in doc.descendants("

book")

where book.attribute("

id").value != "

bk109

"select

book;

console.writeline(

"books count:

", books.count());

非常方便快捷的可以得到結果。但是當xml檔案很大時(例如,xml檔案50m),使用這種方式讀取會很慢。這是因為xelement會將這個xml文件一次性的載入到記憶體中,在記憶體中需要維護xml的dom模型,會消耗很多的記憶體。使用xmldocument操作大xml檔案結果也是一樣。

當遇到大型的xml檔案,使用xmlreader來處理。請看下面的**;

public

static ienumerablebooks(this

xmlreader source)

", content);

xelement element =xelement.parse(formated);

yield

return

newbook;}

}}

using (xmlreader reader = xmlreader.create("

book.xml"))

", reader.books().count());

}

使用xmlreader讀取xml檔案時,不會一次性將xml檔案讀取到記憶體中。處理大型xml檔案的效率比xmldocument/linq to xml高很多。

C 讀取xml檔案

2.將tinyxml檔案目錄下的tinystr.h tinystr.cpp tinyxml.h tinyxml.cpp tinyxmlerror.cpp tinyxmlparser.cpp等放入工程目錄下 3.使用的xml範例如下 book store book1 book2 4.讀取 如下 a 申...

C 讀取XML檔案

xml結構如下 c users desktop 機台資料 eventdata.txt sa5r22eb 27b4 48d7 9de9 c9df6ddf61af 1c users desktop 機台資料 eventdata.txt urh672eb 27b4 48d7 9de9 c9df6ddf61...

讀取XML檔案

private void button2 click object sender,eventargs e using filestream fs new filestream filename,filemode.open,fileaccess.read n xl.name 是否有屬性 if xl.h...