XML(可擴(kuò)展標(biāo)記語言)
在C#中我們常用來當(dāng)做一個(gè)小型的數(shù)據(jù)庫來使用,我們可以將信息保存在XML文檔中,或者從XML文檔中獲取數(shù)據(jù)。這樣就必須使用到XML文檔的數(shù)據(jù)讀取。
XML文檔的讀取有兩種方式:
一、利用XMLReader逐條讀取,通過判斷XML的NodeType屬性來獲取到XML文檔中信息。
示例:設(shè)置可以讀取xml的dtd內(nèi)容
XmlReaderSettings xs=new XmlReaderSettings();
xs.DtdProcessing=DtdProcessing.Parse;
//用xmlreader對(duì)象讀取
XmlReader xml = XmlReader.Create("../../Student.xml",xs);
// bool b= xml.Read();//只進(jìn)流的方式讀取節(jié)點(diǎn)
//string n= xml.Name;//讀取的節(jié)點(diǎn)的名稱
//MessageBox.Show(n);
while (xml.Read())
{
string msg = "";
switch (xml.NodeType)
{
case XmlNodeType.Attribute:
msg = "屬性:" + xml.Name;
break;
case XmlNodeType.CDATA:
msg = "CDATA節(jié)點(diǎn):" + xml.Value;
break;
case XmlNodeType.Comment:
msg = "注釋:" + xml.Value;
break;
case XmlNodeType.DocumentType:
msg = "dtd";
break;
case XmlNodeType.Element:
msg = "開始標(biāo)記:" + xml.Name;
break;
case XmlNodeType.EndElement:
msg = "結(jié)束標(biāo)記:" + xml.Name;
break;
case XmlNodeType.Text:
msg = "內(nèi)容:" + xml.Value;
break;
case XmlNodeType.Whitespace:
msg = "空白節(jié)點(diǎn)";
break;
case XmlNodeType.XmlDeclaration:
msg = "xml文件聲明:"+xml.Name;
break;
default:
break;
}
MessageBox.Show(msg);
}
優(yōu)點(diǎn),每次只讀取一條內(nèi)容,比較節(jié)省系統(tǒng)的內(nèi)容,適合大文件的讀取。
二、利用XMLDocument對(duì)象一次性將整個(gè)XML文檔加載到內(nèi)存中,形成一個(gè)有層次關(guān)系的DOM樹
示例:
XmlDocument doc = new XmlDocument();
doc.Load("../../Part1.xml");
XmlElement xe = doc.DocumentElement;
foreach (XmlNode item in xe.ChildNodes)
{
string province = item.Attributes["id"].Value.ToString();
comboBox1.Items.Add(province);
}
1)XML文檔新增節(jié)點(diǎn)
XmlDocument xml=new XmlDocument();
xml.load("../../Student.xml");
//創(chuàng)建一個(gè)節(jié)點(diǎn)
XmlNode stnode=xml.CreateElement("節(jié)點(diǎn)一");//這里是需要?jiǎng)?chuàng)建的節(jié)點(diǎn)的名字
//stnode.InnerText="";//這里可以設(shè)置節(jié)點(diǎn)中的文本
XmlAttribute sta=xml.CreateAtrribute("id");//這里 創(chuàng)建了一個(gè)名為id的屬性
stnode.Attributes.Append(sta);//將這個(gè)屬性添加到stnode節(jié)點(diǎn)中
xml.DocumentElement.AppendChild(stuNode)//最后將創(chuàng)建的節(jié)點(diǎn)添加到XML文檔的根節(jié)點(diǎn)中
xml.Save("../../Student.xml");//最后將修改后的XML保存到磁盤中
2)XML文檔修改節(jié)點(diǎn)
和新增一樣,首先我們需要將整個(gè)XML文檔加載到內(nèi)存中。
然后我們需要獲取到需要修改的節(jié)點(diǎn)
XmlNode=xml.selectSingleNode("http://student[@stuNo='"+stuNo+"']");
//xpath 路徑的寫法有兩種 //從跟節(jié)點(diǎn)開始往后寫路徑的寫法叫絕對(duì)路徑寫法:/students/student/sex //以"http://"開頭寫路徑的寫法為相對(duì)路徑的寫法://student/sex //如果節(jié)點(diǎn)中右屬性就用[ ]括起來
找到這個(gè)節(jié)點(diǎn)之后,重新給節(jié)點(diǎn)的InnerTextX屬性賦值,就可以實(shí)現(xiàn)修改操作。
3)XML文檔刪除操作
首先,我們同樣需要加載XML文檔,然后我們需要獲取到那個(gè)要?jiǎng)h除的節(jié)點(diǎn)。同樣的調(diào)用selectSingleNode方法,
最后我們使用xml.removeChild();就可以將節(jié)點(diǎn)移除,每次做完操作之后都別忘了調(diào)用xml.Save();將操作后的XML文檔保存到磁盤中。
XMLDocument屬性:
DocumentElement 獲取文檔的根 XmlElement。
ChildNodes 獲取節(jié)點(diǎn)的所有子節(jié)點(diǎn)。
HasChildNodes 獲取一個(gè)值,該值指示節(jié)點(diǎn)是否有任何子節(jié)點(diǎn)。
FirstChild 獲取節(jié)點(diǎn)的第一個(gè)子級(jí)。
LastChild 獲取節(jié)點(diǎn)的最后一個(gè)子級(jí)
NextSibling 獲取緊接在該節(jié)點(diǎn)之后的節(jié)點(diǎn)。
PreviousSibling 獲取緊接在該節(jié)點(diǎn)之前的節(jié)點(diǎn)。
ParentNode 獲取該節(jié)點(diǎn)的父級(jí)節(jié)點(diǎn)。
InnerText 獲取或設(shè)置節(jié)點(diǎn)及其所有子節(jié)點(diǎn)的串聯(lián)值。
InnerXml 獲取或設(shè)置表示當(dāng)前節(jié)點(diǎn)子級(jí)的標(biāo)記。
Attributes 獲取一個(gè) XmlAttributeCollection,它包含該節(jié)點(diǎn)的屬性。
Value 獲取或設(shè)置節(jié)點(diǎn)的值
Name 獲取節(jié)點(diǎn)的限定名。
LocalName 獲取節(jié)點(diǎn)的本地名稱。
Prefix 獲取或設(shè)置該節(jié)點(diǎn)的命名空間前綴。
AppendChild 將指定的節(jié)點(diǎn)添加到該節(jié)點(diǎn)的子節(jié)點(diǎn)列表的末尾
CreateAttribute 創(chuàng)建具有指定名稱的 XmlAttribute
CreateElement 創(chuàng)建 XmlElement
CreateNode 創(chuàng)建 XmlNode
CreateTextNode 創(chuàng)建具有指定文本的 XmlText
RemoveAll 移除當(dāng)前節(jié)點(diǎn)的所有子節(jié)點(diǎn)和/或?qū)傩浴?
RemoveChild 移除指定的子節(jié)點(diǎn)。
ReplaceChild 用 newChild 節(jié)點(diǎn)替換子節(jié)點(diǎn) oldChild。
WriteTo 將 XmlDocument 節(jié)點(diǎn)保存到指定的 XmlWriter。
Save 將 XML 文檔保存到指定的位置。
審核編輯 黃宇
-
XML
+關(guān)注
關(guān)注
0文章
188瀏覽量
33532 -
鴻蒙OS
+關(guān)注
關(guān)注
0文章
191瀏覽量
4860
發(fā)布評(píng)論請(qǐng)先 登錄
xml文件如何打開?怎樣打開XML文件?
xml教程pdf (XML終極教程下載)
An Eagle’s Eye View of XML
An Introduction to XML Applica
XML流上的關(guān)鍵字查詢算法
報(bào)文解析工具中的XML數(shù)據(jù)字典
XML數(shù)據(jù)分頁索引技術(shù)研究
基于XBW變換的XML數(shù)據(jù)壓縮查詢方法
XML數(shù)據(jù)查詢代價(jià)估計(jì)算法
XML數(shù)據(jù)流基于組著色的XPath查詢模型
MTK自帶的XML解析
基于節(jié)點(diǎn)集的XML查詢

XML基礎(chǔ)——XML必須知道的入門知識(shí)

【JAVA UI】【HarmonyOS】【Demo】 鴻蒙如何進(jìn)行 xml 解析

評(píng)論