精華區beta mud_sanc 關於我們 聯絡資訊
【 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"="" --==-==--==-==--==-==--==-==--==-==--==-==--==-==--==-==--==-==--==-==--==-==--