【 utils.xmlread 】
格式:
utils.xmlread (s)
中文:
utils.xmlread (字串)
說明:
這個函數使用 MUSHclient 自帶的 XML 分析器分析收到的字串,其主要
作用是用來分析觸發器和別名等。複製到剪貼板中的設定項(例如觸發器),
透過 ExportXML 函數導出的文字內容,以及讀取到的整個遊戲設定檔都可以
透過這個函數來分析。
如果函數成功的分析了收到的字串,它會回傳下面 3 個結果:
1.來源標籤(所有其它的節點都是它的子節點)
2.來源文字檔的名稱(例如「mushclient」)
3.包含自定義實體的表(如果沒有自定義的實體則回傳 nil)
如果函數分析失敗,它會回傳下面 3 個結果:
1.nil:分析失敗的標誌。
2.錯誤原因。
3.錯誤所在行的行號。
你可以把前面兩個結果傳遞給「asser」函數來檢查分析是否成功。
回傳的表中,每個標籤都由以下幾項組成:
1.name :標籤的名稱(例如 <trigger>foo</trigger> 中節點的
名稱是「trigger」)
2.content :標籤的值(例如 <trigger>foo</trigger> 中節點的值
為「foo」)
3.empty :一個布爾值,標示這個標籤是否是空標籤(例如 <br/>
就是一個空標籤)
4.line :這個標籤所在的行
5.attributes:包含這個標籤所有屬性的一個表,表的索引值是屬性的
名稱(例如 "world_file_version"="15")。
屬性名稱於所在標籤中須獨一無二。如果標籤沒有定義
任何屬性則不會回傳屬性表。
6.nodes :包含子標籤的表。表以升冪數字為索引值,子標籤在表
中的順序和它們在被分析的字串中出現的順序一樣。每
個子標籤的值也都包含上面所說的項。
標籤點的名稱不必是唯一的(例如,一個遊戲設定檔案
中會包含多個觸發器(<trigger>)標籤),所以會以
數字而不是標籤名稱為索引值。如果標籤沒有包含任何
子標籤則不會回傳子標籤表。
範例:
a, b, c = utils.xmlread ("<foo><bar x='2'/></foo>")
require "tprint"
tprint (a)
輸出:
"line"=1
"name"=""
"nodes":
1:
"line"=1
"name"="foo"
"nodes":
1:
"line"=1
"name"="bar"
"empty"=true
"content"=""
"attributes":
"x"="2"
"content"=""
"content"=""
--==-==--==-==--==-==--==-==--==-==--==-==--==-==--==-==--==-==--==-==--==-==--