這篇部落格將介紹在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來處理。請看下面的**;
publicstatic 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...