国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Unity 數(shù)據(jù)讀取|(五)XML文件解析(XmlDocument,XmlTextReader)

這篇具有很好參考價(jià)值的文章主要介紹了Unity 數(shù)據(jù)讀取|(五)XML文件解析(XmlDocument,XmlTextReader)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

1. 前言

XML,全稱為可擴(kuò)展標(biāo)記語言(eXtensible Markup Language),是一種用于描述、傳輸和存儲(chǔ)數(shù)據(jù)的語言。它被設(shè)計(jì)用來傳輸和存儲(chǔ)數(shù)據(jù),與 HTML 不同,XML 的主要目的不在于顯示數(shù)據(jù),而是強(qiáng)調(diào)數(shù)據(jù)的結(jié)構(gòu)性。XML 使用類似 HTML 的標(biāo)簽表示數(shù)據(jù)的結(jié)構(gòu)和其他信息。

2. 優(yōu)缺點(diǎn)

  • XML的優(yōu)點(diǎn):

    • 易于人類閱讀和編寫:XML文檔的格式清晰、易于理解,方便人們進(jìn)行編輯和查看。
    • 跨平臺(tái)性:XML使用Unicode編碼,具有跨平臺(tái)性,可以在不同的操作系統(tǒng)、編程語言和地區(qū)之間進(jìn)行數(shù)據(jù)交換。
    • 可擴(kuò)展性:XML可以自定義標(biāo)簽,適用于不同領(lǐng)域的擴(kuò)展和定制,具有較強(qiáng)的靈活性。
    • 強(qiáng)大的查詢和操作能力:XML文檔的結(jié)構(gòu)化特性使其可以方便地被計(jì)算機(jī)程序解析和查詢,支持XPath等查詢語言,方便進(jìn)行數(shù)據(jù)操作。
  • XML的缺點(diǎn):

    • 冗余數(shù)據(jù):XML文檔在描述數(shù)據(jù)時(shí)會(huì)產(chǎn)生大量的冗余數(shù)據(jù),尤其是在數(shù)據(jù)量較大的情況下,會(huì)導(dǎo)致文件體積較大。
    • 性能問題:XML文檔的解析和查詢操作需要一定的時(shí)間和計(jì)算資源,在處理大量數(shù)據(jù)時(shí)可能會(huì)影響性能。
    • 安全性問題:XML文檔可能包含惡意代碼,如XSS攻擊等,需要注意安全性問題。
    • 不適用于所有數(shù)據(jù)類型:XML不適用于存儲(chǔ)所有類型的數(shù)據(jù),例如二進(jìn)制文件、大文本文件等不適合用XML存儲(chǔ)。

3. 解析

  • 格式模板
<?xml version="1.0" encoding="UTF-8"?>  
<root>  
  <element1>內(nèi)容1</element1>  
  <element2 attribute1="value1">內(nèi)容2</element2>  
  <element3 attribute2="value2">  
    <subelement>子內(nèi)容</subelement>  
  </element3>  
</root>

3.1 XmlDocument

3.1.1 優(yōu)缺點(diǎn)

  • 優(yōu)點(diǎn):
    • 易于使用:XmlDocument提供了大量的方法和屬性,可以方便地操作和查詢XML文檔。它提供了對(duì)整個(gè)XML文檔的樹形結(jié)構(gòu)進(jìn)行遍歷和查詢的能力,使用戶可以輕松地獲取XML文檔中的節(jié)點(diǎn)、屬性、文本等內(nèi)容。
    • 內(nèi)存占用較小:XmlDocument將整個(gè)XML文檔加載到內(nèi)存中,因此適用于處理較小的XML文件。由于整個(gè)XML文檔被加載到內(nèi)存中,用戶可以快速地訪問和查詢XML文檔中的任意節(jié)點(diǎn),而不需要進(jìn)行磁盤I/O操作。
  • 缺點(diǎn):
    • 處理大型文件時(shí)可能會(huì)遇到性能問題:由于XmlDocument將整個(gè)XML文檔加載到內(nèi)存中,因此在處理大型XML文件時(shí)可能會(huì)遇到性能問題。大量的XML數(shù)據(jù)可能會(huì)導(dǎo)致內(nèi)存溢出或性能下降。
    • 不適用于流式處理:XmlDocument適用于一次性解析整個(gè)XML文檔,而不適用于流式處理。如果需要按需讀取XML文檔中的節(jié)點(diǎn),XmlDocument可能不是最佳選擇。

3.1.2 解析

  • 讀?。?/li>
//1.讀取XML文件
//XmlDocument xml = new XmlDocument();
//讀取文本方式1-xml.LoadXml(傳入xml文本字符串)
//讀取文本方式2-xml.Load(傳入路徑)

//2.讀取元素和屬性
//獲取單個(gè)節(jié)點(diǎn) : XmlNode node = xml.SelectSingleNode(節(jié)點(diǎn)名)
//獲取多個(gè)節(jié)點(diǎn) : XmlNodeList nodeList = xml.SelectNodes(節(jié)點(diǎn)名)

//獲取節(jié)點(diǎn)元素內(nèi)容:node.InnerText
//獲取節(jié)點(diǎn)元素屬性:
//1.item.Attributes["屬性名"].Value
//2.item.Attributes.GetNamedItem("屬性名").Value

//通過迭代器遍歷或者循環(huán)遍歷XmlNodeList對(duì)象 可以獲取到各單個(gè)元素節(jié)點(diǎn)


XmlDocument doc = new XmlDocument();  
doc.Load("example.xml");  
  
XmlNode root = doc.DocumentElement;  
XmlNode node = root.SelectSingleNode("http://player");  
string name = node.Attributes["name"].Value;  
int age = int.Parse(node.Attributes["age"].Value);  
  
Debug.Log("Name: " + name);  
Debug.Log("Age: " + age);
  • 寫入:
 //關(guān)鍵類 XmlDocument 用于創(chuàng)建節(jié)點(diǎn) 存儲(chǔ)文件
 //關(guān)鍵類 XmlDeclaration 用于添加版本信息
 //關(guān)鍵類 XmlElement 節(jié)點(diǎn)類
XmlDocument doc = new XmlDocument();  
XmlElement root = doc.CreateElement("game");  
XmlElement player = doc.CreateElement("player");  
player.SetAttribute("name", "John");  
player.SetAttribute("age", 25);  
root.AppendChild(player);  
doc.AppendChild(root);  
doc.Save("example.xml");

3.2 XmlTextReader和XmlTextWriter

XMLTextReader 這個(gè)類設(shè)計(jì)的目的就是從XML文件中快速的讀取數(shù)據(jù),而對(duì)系統(tǒng)資源(主要包括內(nèi)存和處理器時(shí)間)不做很高的要求。文章來源地址http://www.zghlxwxcb.cn/news/detail-752084.html

3.2.1 優(yōu)缺點(diǎn)

  • 優(yōu)點(diǎn):
    • 適用于流式處理:XmlTextReader適用于按需讀取XML文檔中的節(jié)點(diǎn),適用于流式處理大型XML文件。通過逐個(gè)讀取XML文檔中的節(jié)點(diǎn),XmlTextReader可以避免一次性加載整個(gè)XML文件到內(nèi)存中,從而減少內(nèi)存占用和提高處理性能。
    • 性能較好:由于XmlTextReader采用了事件驅(qū)動(dòng)的模型,因此可以更好地利用系統(tǒng)資源,提高處理性能。事件驅(qū)動(dòng)模型使得XmlTextReader可以更加高效地處理大型XML文件,同時(shí)減少CPU和內(nèi)存的使用。
  • 缺點(diǎn):
    • 事件驅(qū)動(dòng)模型需要更多代碼:相比XmlDocument類,XmlTextReader需要更多的代碼來實(shí)現(xiàn)對(duì)XML文檔的解析和處理。使用XmlTextReader進(jìn)行XML解析需要編寫更多的代碼來處理事件觸發(fā)和節(jié)點(diǎn)讀取。
    • 不易于處理屬性值:XmlTextReader對(duì)于屬性值的處理不如XmlDocument方便,需要更多的代碼來實(shí)現(xiàn)。使用XmlTextReader讀取屬性值時(shí),需要額外編寫代碼來獲取節(jié)點(diǎn)的屬性并處理它們。
    • 它是只讀的,僅向前的,不能在文檔中執(zhí)行向后導(dǎo)航操作

3.2.2 解析

  • XmlTextReader讀取:
 static void XmlTextReaderTest()
        {
            XmlTextReader textReader = new XmlTextReader(filePath3);
            textReader.WhitespaceHandling = WhitespaceHandling.None;
            while (textReader.Read())
            {
                if (textReader.NodeType == XmlNodeType.Element)
                {
                  if (reader.Name == "player")  
                    {  
                       string name = reader.GetAttribute("name");  
                       int age = int.Parse(reader.GetAttribute("age"));  
                       Debug.Log("Name: " + name);  
                       Debug.Log("Age: " + age);  
                    }  
                }
                if (textReader.NodeType == XmlNodeType.Text)
                {
                
                }
                if (textReader.NodeType == XmlNodeType.EndElement)
                {
                
                }
            }
            //讀取完畢后要記得關(guān)閉流,否則會(huì)占用文檔,無法被其它線程打開
            textReader.Close();
        }
  • XmlTextWriter寫入:
XmlTextWriter writer = new XmlTextWriter("example.xml", System.Text.Encoding.UTF8);  
writer.WriteStartElement("game");  
writer.WriteStartElement("player");  
writer.WriteAttributeString("name", "John");  
writer.WriteAttributeString("age", 25);  
writer.WriteEndElement(); // player  
writer.WriteEndElement(); // game   
writer.Close();

到了這里,關(guān)于Unity 數(shù)據(jù)讀取|(五)XML文件解析(XmlDocument,XmlTextReader)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Unity數(shù)據(jù)解析(Json、XML、CSV、二進(jìn)制)

    常見的數(shù)據(jù)解析(Json、XML、CSV、二進(jìn)制)

    2024年02月21日
    瀏覽(28)
  • 【Unity】C# 創(chuàng)建/讀取/解析JSON數(shù)據(jù)

    判斷是否存在JSON數(shù)據(jù)文件沒有則創(chuàng)建并保存

    2024年02月16日
    瀏覽(18)
  • 解析xml文件,獲取需要的數(shù)據(jù)并寫入txt文件中

    =_=? 話不多說!直接上代碼!=_= 1、XmlUtil.java? ? ?xml解析工具類 ?2、測試代碼 解析xml方式還有很多種,這只是其中一種,可以參考:Java XML解析 - 利用dom(org.w3c.dom)解析XML ?

    2024年02月14日
    瀏覽(26)
  • Unity學(xué)習(xí)筆記--數(shù)據(jù)持久化XML文件(1)

    Unity學(xué)習(xí)筆記--數(shù)據(jù)持久化XML文件(1)

    Xml是可拓展標(biāo)記語言,一種文件格式。我們使用xml來完成對(duì)數(shù)據(jù)持久化的存儲(chǔ)。等待我們有一程序運(yùn)行結(jié)束之后,將內(nèi)存中的數(shù)據(jù)進(jìn)行保存,(保存在硬盤/服務(wù)器)實(shí)現(xiàn)對(duì)數(shù)據(jù)的持久化存儲(chǔ)。 xml文件的讀取和保存以及修改 要點(diǎn): XMl文件的加載 XML文件節(jié)點(diǎn)的查找訪問 XML文件

    2024年02月05日
    瀏覽(26)
  • Unity文本框解析讀取mqtt服務(wù)器JSON數(shù)據(jù)

    Unity文本框解析讀取mqtt服務(wù)器JSON數(shù)據(jù)

    本次內(nèi)容是講述如何將mqtt服務(wù)器中接收到的數(shù)據(jù)在Unity3D的文本框控件中顯示JSON鍵值對(duì)中的“值”。 需求: 1.GameObject——UI——Text (將Unity 3D的文本框控件置于場景) 命名空間引用: using UnityEngine.UI; 2. Newtonsoft插件 命名空間引用: Newtonsoft.Json.Linq; 3.MQTT通訊需求: (1)h

    2023年04月08日
    瀏覽(25)
  • Unity 數(shù)據(jù)讀取|(二)多種方式讀取文本文件

    在Unity3D中,我們經(jīng)常會(huì)需要在本地或者服務(wù)器上讀取游戲數(shù)據(jù),Unity中讀取文件的方式有很多種,寫下此文章以做總結(jié)。 TextAsset是Unity 提供的一個(gè)文本對(duì)象,它可以通過 Resources.Load 或者 AssetBundle 來讀取數(shù)據(jù)。 它支持讀取的文本格式包括 . txt .html .htm .bytes .json .csv .yaml .fnt 。

    2024年02月04日
    瀏覽(18)
  • 讀取JSON文件 如何在Unity中讀取Json文件中的數(shù)據(jù)

    讀取JSON文件 如何在Unity中讀取Json文件中的數(shù)據(jù)

    Josn是一種輕量級(jí)的數(shù)據(jù)交換格式,JSON能夠描述四種簡單的類型(字符串、數(shù)字、布爾值及null)和兩種結(jié)構(gòu)化類型(對(duì)象及數(shù)組),在Unity里經(jīng)常用Json來處理大量的字符串,容易解析,效率非常快。 基本結(jié)構(gòu) 1、語法 數(shù)據(jù)存在鍵值對(duì)中 數(shù)據(jù)由逗號(hào)分隔 花括號(hào)保存對(duì)象 方括號(hào)保存

    2024年02月15日
    瀏覽(23)
  • Java讀取XML文件

    Java讀取XML文件

    XML聲明是XML文檔的第一句,其格式如下 良好的XML文檔必須只有一個(gè)根元素,就是緊接這聲明后面接著的第一個(gè)元素,其他元素都是這個(gè)根元素的子元素,根元素完全包括文檔中其他所有的元素。 在XML文檔中,大小寫是有區(qū)別的。\\\"A\\\"和\\\"a\\\"是不同的標(biāo)記。 所有標(biāo)記必須成對(duì)出現(xiàn)

    2024年02月08日
    瀏覽(24)
  • Java讀取XML文本文件

    圓周率沒有盡頭,風(fēng)景一直在路上 編寫測試的xml文本文件 編碼讀?。筛鶕?jù)自己需求改寫讀取節(jié)點(diǎn))

    2024年02月16日
    瀏覽(101)
  • qt xml文件寫入讀取

    ****************************************************************************** QT ? ? ? += core gui xml ****************************************************************************** #include \\\"mainwindow.h\\\" #include QDomDocument #include QTextStream #include QFile #include QDebug MainWindow::MainWindow(QWidget *parent) ? ? : QMainWindow(parent) { ? ?

    2024年02月09日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包