asp.net XML文件操作實(shí)現(xiàn)代碼
更新時(shí)間:2009年12月24日 01:19:36 作者:
這幾天在項(xiàng)目中用到了XML文件配置存儲(chǔ)一些基本信息,如:參數(shù)、表格等一些信息存儲(chǔ)。由于記錄不是很多,所以用此文件來代替數(shù)據(jù)庫中設(shè)計(jì)的表結(jié)構(gòu)。
以前也學(xué)過一些這方面的知識(shí),好久都沒怎么用了,忘得也差不多,正好現(xiàn)在可以重新鞏固一遍,熟悉一下對(duì)XML文件的操作。
XML(Extensible Markup Language)即可擴(kuò)展標(biāo)記語言,它與HTML一樣,都是SGML(Standard Generalized Markup Language,標(biāo)準(zhǔn)通用標(biāo)記語言)。Xml是Internet環(huán)境中跨平臺(tái)的,依賴于內(nèi)容的技術(shù),是當(dāng)前處理結(jié)構(gòu)化文檔信息的有力工具。
擴(kuò)展標(biāo)記語言XML是一種簡單的數(shù)據(jù)存儲(chǔ)語言,使用一系列簡單的標(biāo)記描述數(shù)據(jù),而這些標(biāo)記可以用方便的方式建立,雖然XML占用的空間比二進(jìn)制數(shù)據(jù)要占用更多的空間,但XML極其簡單易于掌握和使用?! ?
XML數(shù)據(jù)類型有:Element,Attribute,Comment,Text
如下一個(gè)簡單的XML文件:
代碼
<?xml version="1.0" encoding="UTF-8"?>
<library>
<books id="計(jì)算機(jī)類">
<book id="10001">
<name>書名1</name>
<publish>出版社1</publish>
<price>價(jià)格1</price>
</book>
<book id="10002">
<name>書名2</name>
<publish>出版社2</publish>
<price>價(jià)格2</price>
</book>
</books>
<books id="人文類">
<book id="20001">
<name>書名1</name>
<publish>出版社1</publish>
<price>價(jià)格1</price>
</book>
<book id="20002">
<name>書名2</name>
<publish>出版社2</publish>
<price>價(jià)格2</price>
</book>
</books>
</library>
Element 元素 <book></book>
Attribute 屬性 id="計(jì)算機(jī)類"
Text 內(nèi)容 <name>書名2</name>
一般我們要去XML文件中根據(jù)屬性值去查找對(duì)應(yīng)節(jié)點(diǎn)所包含的內(nèi)容,為了避免嵌套很多節(jié)點(diǎn)的循環(huán),我們可以使用下面的方法,找到所需的節(jié)點(diǎn)。
XmlDocument xdoc = new XmlDocument(); //建立文檔對(duì)象
xdoc.Load("book.xml"); //加載xml文件
string Condition = "http://books[@id='計(jì)算機(jī)類']//book[@id='10001']"; //需要查找節(jié)點(diǎn)的條件
XmlNode node = xdoc.DocumentElement.SelectSingleNode(Condition); //返回符合條件的節(jié)點(diǎn)
foreach (XmlNode xnode1 in node)
{
//該節(jié)點(diǎn)下所有子節(jié)點(diǎn)
XmlNodeList xNodeList2 = node.ChildNodes;
}
查詢條件說明:
1.使用text()來獲取Text節(jié)點(diǎn)
string Condition = "http://books[@id='計(jì)算機(jī)類']//book[@id='10001']//name//text()";
2.使用[]符號(hào)來查詢特定條件的節(jié)點(diǎn)
string Condition = "http://books[@id='計(jì)算機(jī)類']//book[@id='10001']";
3.使用 | 符號(hào)可以獲得多重模式的節(jié)點(diǎn)
string Condition = "http://books[@id='計(jì)算機(jī)類']//book[@id='10001'] | //books[@id='計(jì)算機(jī)類']//book[@id='10002']";
4.使用*符號(hào)可以返回當(dāng)前節(jié)點(diǎn)的所有子節(jié)點(diǎn)
string Condition = "http://books[@id='計(jì)算機(jī)類']//*//name";
XML數(shù)據(jù)的編輯:
1.增加一個(gè)元素的屬性(Attribute)節(jié)點(diǎn)
XmlNode xNodeAtt = new XmlNode();
xNodeAtt = xDoc.CreateAttribute("id",book);
xNodeAtt.InnerXml = "10003";
objNode.Attributes.Append(xNodeAtt);
2.刪除一個(gè)元素的屬性
objNode.Attributes.Remove(xAtt);
3.增加一個(gè)子元素(Element)
XmlNode xNodeAtt = new XmlNode();
xNodeAtt = xDoc.CreateElement("book","書");
xNodeAtt.InnerXml = "10003";
objNode.Attributes.Append(xNodeAtt);
4.刪除一個(gè)子元素
objNode.RemoveChild(nodeChild);
5.替換一個(gè)子元素
objNode.ReplaceChild(newChild,oldChile);
來自:http://zhf.cnblogs.com/
XML(Extensible Markup Language)即可擴(kuò)展標(biāo)記語言,它與HTML一樣,都是SGML(Standard Generalized Markup Language,標(biāo)準(zhǔn)通用標(biāo)記語言)。Xml是Internet環(huán)境中跨平臺(tái)的,依賴于內(nèi)容的技術(shù),是當(dāng)前處理結(jié)構(gòu)化文檔信息的有力工具。
擴(kuò)展標(biāo)記語言XML是一種簡單的數(shù)據(jù)存儲(chǔ)語言,使用一系列簡單的標(biāo)記描述數(shù)據(jù),而這些標(biāo)記可以用方便的方式建立,雖然XML占用的空間比二進(jìn)制數(shù)據(jù)要占用更多的空間,但XML極其簡單易于掌握和使用?! ?
XML數(shù)據(jù)類型有:Element,Attribute,Comment,Text
如下一個(gè)簡單的XML文件:
代碼
復(fù)制代碼 代碼如下:
<?xml version="1.0" encoding="UTF-8"?>
<library>
<books id="計(jì)算機(jī)類">
<book id="10001">
<name>書名1</name>
<publish>出版社1</publish>
<price>價(jià)格1</price>
</book>
<book id="10002">
<name>書名2</name>
<publish>出版社2</publish>
<price>價(jià)格2</price>
</book>
</books>
<books id="人文類">
<book id="20001">
<name>書名1</name>
<publish>出版社1</publish>
<price>價(jià)格1</price>
</book>
<book id="20002">
<name>書名2</name>
<publish>出版社2</publish>
<price>價(jià)格2</price>
</book>
</books>
</library>
Element 元素 <book></book>
Attribute 屬性 id="計(jì)算機(jī)類"
Text 內(nèi)容 <name>書名2</name>
一般我們要去XML文件中根據(jù)屬性值去查找對(duì)應(yīng)節(jié)點(diǎn)所包含的內(nèi)容,為了避免嵌套很多節(jié)點(diǎn)的循環(huán),我們可以使用下面的方法,找到所需的節(jié)點(diǎn)。
XmlDocument xdoc = new XmlDocument(); //建立文檔對(duì)象
xdoc.Load("book.xml"); //加載xml文件
string Condition = "http://books[@id='計(jì)算機(jī)類']//book[@id='10001']"; //需要查找節(jié)點(diǎn)的條件
XmlNode node = xdoc.DocumentElement.SelectSingleNode(Condition); //返回符合條件的節(jié)點(diǎn)
foreach (XmlNode xnode1 in node)
{
//該節(jié)點(diǎn)下所有子節(jié)點(diǎn)
XmlNodeList xNodeList2 = node.ChildNodes;
}
查詢條件說明:
1.使用text()來獲取Text節(jié)點(diǎn)
string Condition = "http://books[@id='計(jì)算機(jī)類']//book[@id='10001']//name//text()";
2.使用[]符號(hào)來查詢特定條件的節(jié)點(diǎn)
string Condition = "http://books[@id='計(jì)算機(jī)類']//book[@id='10001']";
3.使用 | 符號(hào)可以獲得多重模式的節(jié)點(diǎn)
string Condition = "http://books[@id='計(jì)算機(jī)類']//book[@id='10001'] | //books[@id='計(jì)算機(jī)類']//book[@id='10002']";
4.使用*符號(hào)可以返回當(dāng)前節(jié)點(diǎn)的所有子節(jié)點(diǎn)
string Condition = "http://books[@id='計(jì)算機(jī)類']//*//name";
XML數(shù)據(jù)的編輯:
1.增加一個(gè)元素的屬性(Attribute)節(jié)點(diǎn)
XmlNode xNodeAtt = new XmlNode();
xNodeAtt = xDoc.CreateAttribute("id",book);
xNodeAtt.InnerXml = "10003";
objNode.Attributes.Append(xNodeAtt);
2.刪除一個(gè)元素的屬性
objNode.Attributes.Remove(xAtt);
3.增加一個(gè)子元素(Element)
XmlNode xNodeAtt = new XmlNode();
xNodeAtt = xDoc.CreateElement("book","書");
xNodeAtt.InnerXml = "10003";
objNode.Attributes.Append(xNodeAtt);
4.刪除一個(gè)子元素
objNode.RemoveChild(nodeChild);
5.替換一個(gè)子元素
objNode.ReplaceChild(newChild,oldChile);
來自:http://zhf.cnblogs.com/
相關(guān)文章
asp.net 點(diǎn)縮略圖彈出隨圖片大小自動(dòng)調(diào)整的頁面
程序用asp.net編寫,功能主要是,點(diǎn)pic_small.Aspx頁面的縮略圖后彈出pic_all.aspx頁面,pic_all.aspx頁面的大小要根據(jù)圖片大小自動(dòng)調(diào)整2009-06-06
一個(gè)完整的ASP.NET 2.0 URL重寫方案[翻譯]
這篇文章描述了一個(gè)完整的 ASP.NET 2.0 URL 重寫方案。這個(gè)方案使用正則表達(dá)式來定義重寫規(guī)則并解決通過虛擬 URLs 訪問頁面產(chǎn)生回發(fā)事件的一些可能的困難。2009-11-11
WPF實(shí)現(xiàn)ScrollViewer滾動(dòng)到指定控件處
這篇文章主要為大家詳細(xì)介紹了WPF實(shí)現(xiàn)ScrollViewer滾動(dòng)到指定控件處,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06
看到本質(zhì)而不是現(xiàn)象--解決ASP.NET CS0016的問題
看到本質(zhì)而不是現(xiàn)象--解決ASP.NET CS0016的問題...2007-01-01
輕量級(jí)ORM框架Dapper應(yīng)用之實(shí)現(xiàn)CURD操作
這篇文章介紹了使用Dapper實(shí)現(xiàn)CURD操作的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-03-03
asp.net用url重寫URLReWriter實(shí)現(xiàn)任意二級(jí)域名 新
最近有個(gè)朋友要做url重寫的東西,我?guī)退伺?回頭看當(dāng)年自己寫的那個(gè)文章,當(dāng)時(shí)以為自己寫的很容易理解.但現(xiàn)在再看卻覺得寫的不好.而今天百度了一下urlrewriter發(fā)現(xiàn)我這個(gè)文章竟然排第二.為了方便更多朋友,我再寫點(diǎn)東西補(bǔ)充下.2009-11-11

