Unity 之 Lua中讀取處理XML文件

      網友投稿 965 2025-04-03

      Unity 之 Lua中處理XML文件

      一.下載xmlSimple.lua并導入工程

      二.解析XML

      三.實際使用

      一.下載xmlSimple.lua并導入工程

      首先需要下載Lua-Simple-XML:GitHub地址:

      https://github.com/Cluain/Lua-Simple-XML-Parser

      1.將xmlSimple.lua文件復制到項目中。

      2.創建局部變量local xml = require(“xmlSimple.lua”).newParser()

      3.使用xml:ParseXmlText(xmlString)或xml:loadFile(xmlFilename, base)

      按照上面的步驟使用,我將xmlSimple.lua腳本導入到:LuaFramework --> Lua – > Common 的文件夾下面,所有我創建局部變量是下圖這樣寫的:

      讀取代碼:

      xml:ParseXmlText(xmlString) 這個讀取方式是傳遞一個Xml的字符串,就不多說了,官方的Demo就是這么寫的,有興趣可以去看下.

      xml:loadFile(xmlFilename, base) 這個讀取文件的形式的不太好用,可能是我沒用明白吧,有知道的大佬,希望留言解惑.

      二.解析XML

      是Lua-Simple-XML在GitHub上的文檔說明:

      eight twelve

      1

      2

      3

      4

      5

      可以通過兩種方式訪問值:

      使用簡單的方法:

      xml.test["@one"] == "two" xml.test.nine["@ten"] == "eleven" xml.test.nine:value() == "twelve" xml.test.three[1]["@four"][1] == "five" xml.test.three[1]["@four"][2] == "six" xml.test.three[2]:value() == "eight"

      1

      2

      3

      4

      5

      6

      或者,如果您的XML稍微復雜一點,您可以這樣做:

      xml:children()[1]:name() == "test" xml:children()[1]:children()[2]:value() == "eight" xml:properties()[1] == {name = "one", value = "two"}

      1

      2

      3

      三.實際使用

      function LoadConfigFile() -- 讀取本地文件 -- local xmlDoc = xml:loadFile("E:\project\client_3_0\Assets\Resources\GameRule\Test.xml") -- -- 讀取Resources下的文件 -- 注意要在 CustomSettings.cs腳本中添加 _GT(typeof(TextAsset)), local textAsset = resMgr:LoadAsset("GameRule/Test"); if textAsset == nil then logError("未讀取到的文件:",GAME_KIND_WORD[Cur_GameKind],gameKind); return; end //讀取XML文件 local xmlDoc = xml:ParseXmlText(textAsset.text); print(type(xmlDoc)) --[[ 看看讀取到的表中的屬性有什么 for k,v in pairs(xmlDoc) do print(k,v) end RuleRoot table: 0x36d26498 addProperty function: 0x36d288b8 children function: 0x36d287c8 addChild function: 0x36d28828 ___value properties function: 0x36d28858 setValue function: 0x36d24760 setName function: 0x36d28798 numProperties function: 0x36d28888 value function: 0x36d28608 __props table: 0x36d285c0 numChildren function: 0x36d287f8 name function: 0x36d286a0 ___children table: 0x36d28578 ]] -- 一級節點的子節點數 print(xmlDoc:numChildren()) -- 第一個二級節點的名字 print(xmlDoc:children()[1]:name()) -- 第一個二級的節點的子節點數 print(xmlDoc:children()[1]:numChildren()) -- 一級節點 local rootRule = xmlDoc:children()[1]; -- 二級節點 local root = rootRule:children()[1]; -- 遍歷子節點 for i = 1, root:numChildren() do local rowNode = root:children()[i]; -- C#中獲取名字這樣寫 rowNode.Name if rowNode:name() == "row" then print("子節點的名字是:Row 處理邏輯 todo..."); end -- 獲取屬性 C#: rowNode.Attributes["ruleName"] if rowNode["@ruleName"] ~= nil then print("子節點存在ruleName屬性 todo..."); end -- 獲取屬性的值 C#:rowNode.Attributes["txt"].Value; local data = rowNode["@txt"]; --獲取指定的子節點 C#:root.SelectSingleNode("groups"); local groupsNode = root.groups; end end

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      27

      28

      29

      30

      31

      Unity 之 Lua中讀取處理XML文件

      32

      33

      34

      35

      36

      37

      38

      39

      40

      41

      42

      43

      44

      45

      46

      47

      48

      49

      50

      51

      52

      53

      54

      55

      56

      57

      58

      59

      60

      61

      62

      63

      64

      65

      66

      67

      68

      遇到的一個問題: 在使用過程中,我的XML如下,

      1

      2

      我這樣獲取這個one的屬性是取不到的,

      local data = rowNode["@one"]

      1

      經驗證,是因為上面one后面多個

      空格

      造成的,具體原因我還不清楚,希望有知道的大佬告知,希望你不要犯這樣的錯誤哦!

      Lua unity XML

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:網頁復制表格到WPS中為何沒有保留原網頁格式(wps如何復制表格保持原有格式)
      下一篇:excel怎么每頁都能打印標題呢?
      相關文章
      亚洲依依成人亚洲社区| 亚洲视频一区在线观看| 一本色道久久88亚洲精品综合 | 亚洲啪AV永久无码精品放毛片| 亚洲福利电影在线观看| 久久久久亚洲AV无码专区首JN| 亚洲A∨无码无在线观看| 亚洲AV无码久久精品狠狠爱浪潮| 亚洲女久久久噜噜噜熟女| 亚洲女同成av人片在线观看| 亚洲国产综合无码一区| 亚洲午夜国产精品无码老牛影视| 国产美女亚洲精品久久久综合| 精品国产亚洲男女在线线电影| 国产精品亚洲美女久久久| 亚洲午夜久久久久妓女影院| 久久91亚洲人成电影网站| 国产精品亚洲A∨天堂不卡| 久久精品国产亚洲沈樵| 久久综合九九亚洲一区| 久久夜色精品国产亚洲AV动态图| 亚洲第一极品精品无码久久| 亚洲AV无码成人网站久久精品大| 亚洲国产精品自在在线观看| 亚洲午夜久久久精品影院| 亚洲网站免费观看| 亚洲一卡二卡三卡| 亚洲人成色4444在线观看| 精品国产亚洲一区二区三区在线观看| 最新亚洲人成无码网www电影| 亚洲av午夜成人片精品电影| 亚洲日韩在线观看免费视频| 浮力影院亚洲国产第一页| 亚洲精品无码久久一线| 久久久久亚洲精品无码系列| 亚洲精品福利网泷泽萝拉| 亚洲一区二区三区高清不卡 | 国产成人麻豆亚洲综合无码精品 | 香蕉大伊亚洲人在线观看| 亚洲成av人片在线天堂无| 亚洲国产精品碰碰|