0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

鴻蒙OS開發(fā)-(用xml寫查詢語句+xml使用)

jf_46214456 ? 來源:jf_46214456 ? 作者:jf_46214456 ? 2024-01-26 17:51 ? 次閱讀

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對象讀取
            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對象一次性將整個(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)開始往后寫路徑的寫法叫絕對路徑寫法:/students/student/sex //以"http://"開頭寫路徑的寫法為相對路徑的寫法://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è)子級。  
LastChild   獲取節(jié)點(diǎn)的最后一個(gè)子級   
NextSibling   獲取緊接在該節(jié)點(diǎn)之后的節(jié)點(diǎn)。  
PreviousSibling 獲取緊接在該節(jié)點(diǎn)之前的節(jié)點(diǎn)。  
ParentNode  獲取該節(jié)點(diǎn)的父級節(jié)點(diǎn)。

InnerText   獲取或設(shè)置節(jié)點(diǎn)及其所有子節(jié)點(diǎn)的串聯(lián)值。  
InnerXml  獲取或設(shè)置表示當(dāng)前節(jié)點(diǎn)子級的標(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)。   
ReplaceChildnewChild 節(jié)點(diǎn)替換子節(jié)點(diǎn) oldChild。   
WriteToXmlDocument 節(jié)點(diǎn)保存到指定的 XmlWriterSaveXML 文檔保存到指定的位置。

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • XML
    XML
    +關(guān)注

    關(guān)注

    0

    文章

    187

    瀏覽量

    33022
  • 鴻蒙OS
    +關(guān)注

    關(guān)注

    0

    文章

    188

    瀏覽量

    4359
收藏 人收藏

    評論

    相關(guān)推薦

    xml文件如何打開?怎樣打開XML文件?

    XML是ExtensibleMarkupLanguage的簡寫,一種擴(kuò)展性標(biāo)識(shí)語言?,F(xiàn)在教你打開xml文件的方法和軟件。呵,其實(shí)最簡單的就是EXCEL表格打開了。。也可以Netsc
    發(fā)表于 07-04 17:56

    xml教程下載

     XML簡介 XML文檔的組成 XML的語法規(guī)則 元素的語法 XML文檔的有效性  DTD簡介 DTD語法&n
    發(fā)表于 10-07 13:06 ?0次下載

    xml教程pdf (XML終極教程下載)

    xml教程pdf (XML終極教程下載) Welcome to the XML Bible. After reading this book I hope you’ll agree with me
    發(fā)表于 10-07 14:15 ?0次下載

    An Eagle’s Eye View of XML

    This first chapter introduces you to XML. It explains ingeneral what XML is and how it is used.
    發(fā)表于 10-07 14:22 ?18次下載

    An Introduction to XML Applica

    An Introduction to XML Applications In this chapter we’ll be looking at some examples
    發(fā)表于 10-07 14:23 ?13次下載

    XML流上的關(guān)鍵字查詢算法

    針對當(dāng)前XML 流過濾研究中存在的問題,使用關(guān)鍵字查詢方法作為解決方案。提出最右包含邊界的概念,結(jié)合一個(gè)虛擬棧實(shí)現(xiàn)用于在XML 數(shù)據(jù)流上進(jìn)行關(guān)鍵字查詢的XVirtualStack 算法
    發(fā)表于 03-21 15:07 ?14次下載

    報(bào)文解析工具中的XML數(shù)據(jù)字典

    針對報(bào)文解析過程中存在的數(shù)據(jù)存儲(chǔ)無序、查詢和調(diào)用不便等問題,提出應(yīng)用XML 數(shù)據(jù)字典進(jìn)行數(shù)據(jù)存儲(chǔ)的方案。根據(jù)給定的數(shù)據(jù)表,設(shè)計(jì)XML 形式的數(shù)據(jù)字典。實(shí)現(xiàn)XML 字典數(shù)據(jù)的解
    發(fā)表于 03-28 09:38 ?36次下載

    XML數(shù)據(jù)分頁索引技術(shù)研究

    對海量XML文檔的索引查詢技術(shù)進(jìn)行研究,提出一種XML數(shù)據(jù)分頁索引查詢實(shí)現(xiàn)方法。該方法把頁面元素標(biāo)記數(shù)量作為數(shù)據(jù)分頁依據(jù),建立XML數(shù)據(jù)的分
    發(fā)表于 03-31 10:07 ?10次下載

    基于XBW變換的XML數(shù)據(jù)壓縮查詢方法

    XML數(shù)據(jù)格式雖然具有易于創(chuàng)建和解析的特點(diǎn),但數(shù)據(jù)格式過于冗長,難以實(shí)現(xiàn)具體的查詢。該文引入XBW變換,將XML數(shù)據(jù)壓縮成3個(gè)線性序列,使XML數(shù)據(jù)的
    發(fā)表于 04-14 09:22 ?10次下載

    XML數(shù)據(jù)查詢代價(jià)估計(jì)算法

    XML數(shù)據(jù)查詢代價(jià)估計(jì)問題是一種典型的多元素查詢條件代價(jià)估計(jì)問題。XML數(shù)據(jù)中的值信息分布不僅與其他值信息分布相關(guān),還與XML數(shù)據(jù)中的結(jié)構(gòu)信
    發(fā)表于 01-27 11:35 ?6次下載

    XML數(shù)據(jù)流基于組著色的XPath查詢模型

    提出了一種新的XML數(shù)據(jù)流XPath查詢模型GBRender,該模型通過組著色序列來直接處理元素,具有較高的處理效率與較強(qiáng)的適應(yīng)性。
    發(fā)表于 08-02 14:16 ?0次下載

    MTK自帶的XML解析

    現(xiàn)在大多數(shù)軟件都用xml作為配置文件,MTK本身也帶了XML文件的解析,在此我不評說自帶XML的解析效率
    發(fā)表于 08-31 16:00 ?0次下載

    基于節(jié)點(diǎn)集的XML查詢

    隨著XML應(yīng)用的日益廣泛,XML數(shù)據(jù)管理和查詢問題也引起了人們的普遍關(guān)注,并成為研究的熱點(diǎn)。盡管XML有其各種不同的表示和用途,但其本質(zhì)仍然是基于層次的數(shù)據(jù)結(jié)構(gòu),并可映射為相應(yīng)的
    發(fā)表于 12-20 09:35 ?0次下載
    基于節(jié)點(diǎn)集的<b class='flag-5'>XML</b><b class='flag-5'>查詢</b>

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

    XML(Extensible Markup Language) 即可擴(kuò)展標(biāo)記語言。XML是Internet環(huán)境中跨平臺(tái)的、依賴于內(nèi)容的技術(shù),是當(dāng)前處理結(jié)構(gòu)化文檔信息的有力工具
    的頭像 發(fā)表于 06-22 15:12 ?2167次閱讀
    <b class='flag-5'>XML</b>基礎(chǔ)——<b class='flag-5'>XML</b>必須知道的入門知識(shí)

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

    鴻蒙鴻蒙如何進(jìn)行數(shù)據(jù)解析 【問題描述】有時(shí)候我們從服務(wù)器獲取是 xml 格式數(shù)據(jù),我們需要將 xml 轉(zhuǎn)化成 model 對象,該如何使用呢?下面舉個(gè)例子說明一下,將分以下幾步進(jìn)行
    的頭像 發(fā)表于 02-19 15:59 ?487次閱讀
    【JAVA UI】【HarmonyOS】【Demo】 <b class='flag-5'>鴻蒙</b>如何進(jìn)行 <b class='flag-5'>xml</b> 解析