##關于XML
#### XML是什么?
XML是可擴展標記語言(Extensible Markup Language)的縮寫,其中的 標記(Markup)是關鍵部分。您可以創建內容,然后使用限定標記標記它,從而使每個單詞、短語或塊成為可識別、可分類的信息。您創建的文件,或文檔實例由元素(標記)和內容構成。當從打印輸出讀取或以電子形式處理文檔時,元素能夠幫助更好地理解文檔。元素的描述性越強,文檔各部分越容易識別。自從出現標記至今,帶有標記的內容就有一個優勢,即在計算機系統缺失時,仍然可以通過標記理解打印出來數據。
*****
#### XML的語法
XML的語法非常簡單,它是由標記(或稱標簽)和內容構成的。標記就是一些符號,用來表示特定的格式。而內容則可以是您需要存放的任意內容。
XML的語法很像HTML,XML文件通過不同的**元素(Element)**(或稱節點)表示不同的信息,每個元素分別擁有元素名、屬性、元素內容等功能。元素以開始標記和結束標記為分隔標志,下面我們結合一段XML代碼進行一下分析。
~~~
<?xml version="1.0" encoding="UTF-8"?>
<!-- 注釋,不是XML代碼 -->
<Object Type="1" ID="1001" Text="Hello">
<SubObj Item="11">
哈哈哈
</SubObj>
</Object>
~~~
**首先要明確一點,XML是區分大小寫的,這點要非常注意**。
XML的第一行一般為<?xml ... ?>,用于表示XML的信息,它一般包括版本號(version)和編碼(encoding)。
<!-- 注釋內容 --> XML中使用這種語法結構來表示對文檔的注釋。注釋內容可以包含單行或者多行文本,注釋中的內容將不按XML語法解析。
<Object>為開始標記,與之對應的加上結束標記符(/)的標記</Object>則是它的結束標記了,兩個標記之間的就是元素的內容。
對于<Object Type="1" ID="1001" Text="Hello">來說,Object就是它的元素名,而Type、ID、Text就是它的屬性,而等于號后面被引號包裹起來的部分則是屬性對應的值。而因為它的內容里還擁有元素,所以此時Object元素就自動升格為SubObj的父元素,而SubObj則為Object的子元素。
對于SubObj元素來說,它的內容就為文字“哈哈哈”,并擁有一個Item屬性 值為11。
在XML的語法中規定,如果一個元素的內容為空則可以簡寫,如<Obj id="1"></Obj>可以簡寫為<Obj id="1" />。
XML中的元素、屬性的命名應當使用英文,并且避免使用數字和符號。
XML內容或屬性值中若需要出現以下字符,應當使用其轉義符進行替代,否則可能會導致解析錯誤。
| 字符 | 轉義符 |
| -- | -- |
| ' | &apos; |
| " | &quot; |
| & | &amp; |
| < | &lt; |
| > | &gt; |
XML的補充知識可以參考:[W3School 的相關內容](http://www.w3school.com.cn/xml/index.asp)。
*****
### ExDirectUI為何要用XML進行界面布局?
1. XML的最大好處就是能清晰的聲明出元素的父子關系,這和界面布局的結構是一樣的。
2. 由于XML的屬性自定義性很強,所以可以實現不同種類控件的不同參數的存儲。
3. XML可以原生支持多種編碼,在界面布局中使用Unicode碼可以更好的支持多國語言。
4. XML相比JSON等支持結構化的語言來說,擁有良好的可讀性和可維護性。
5. XML可以被Windows原生的DOM對象解析,省去編寫布局文件解析模塊的很多工作。
- 序言
- 基礎
- 概念
- 術語
- 相關技術
- 入門
- 如何獲取
- 環境需求
- 使用條件
- 開發規范
- 文件結構
- 讓我們開始吧
- 全局命令
- 引擎命令
- Ex_Init
- Ex_UnInit
- Ex_XMLRegisterValueCallback
- Ex_XMLRegisterCallback
- Ex_GetLong
- 輔助命令
- Ex_SleepEx
- Ex_GetHash
- Ex_Atom
- 窗口命令
- 窗口相關
- Ex_WndRegisterClass
- Ex_WndCreate
- Ex_WndMsgLoop
- 皮膚相關
- Ex_DUIBindWindow
- Ex_DUICreateFromLayout
- Ex_DUILoadLayout
- Ex_DUIHandEvent
- Ex_DUIShowWindow
- Ex_DUIShowWindowEx
- Ex_DUIGetBkgColor
- Ex_DUISetBkgColor
- Ex_DUISetBkgImage
- Ex_DUIGetAlpha
- Ex_DUISetAlpha
- Ex_DUIGetSysCtl
- Ex_DUIGetObjFromID
- Ex_DUIGetClientRect
- Ex_DUIInvalidateRect
- Ex_DUIObjFromWindowPoint
- Ex_DUIObjFromScreenPoint
- Ex_DUIAddTrayIcon
- Ex_DUIPopupTrayIcon
- Ex_DUIPopupTipsEx
- Ex_DUIDeleteTrayIcon
- 關于布局文件
- 控件命令
- 控件基類
- 關于布局文件
- Ex_ObjCreate
- Ex_ObjCreateEx
- Ex_ObjDestroy
- Ex_ObjGetLong
- Ex_ObjSetLong
- Ex_ObjDispatchMessage
- Ex_ObjSendMessage
- Ex_ObjPostMessage
- Ex_ObjCallProc
- Ex_ObjDefProc
- Ex_ObjDispatchOwnerMessage
- Ex_ObjUpdate
- Ex_ObjInvalidateRect
- Ex_ObjBeginPaint
- Ex_ObjEndPaint
- Ex_ObjGethWnd
- Ex_ObjGethExDui
- Ex_ObjGethTheme
- Ex_ObjGetParent
- Ex_ObjSetParent
- Ex_ObjRegister
- Ex_ObjGetText
- Ex_ObjSetText
- Ex_ObjGetBkColor
- Ex_ObjSetBkColor
- Ex_ObjGetBkImageInfo
- Ex_ObjSetBkImageInfo
- Ex_ObjGetBkMode
- Ex_ObjSetBkMode
- Ex_ObjGetTextColor
- Ex_ObjSetTextColor
- Ex_ObjGetBorderColor
- Ex_ObjSetBorderColor
- Ex_ObjGetAlpha
- Ex_ObjSetAlpha
- Ex_ObjSetFont
- Ex_ObjSetRedraw
- Ex_ObjValidate
- Ex_ObjSetTimer
- Ex_ObjKillTimer
- Ex_ObjEnableScrollBar
- Ex_ObjGetScrollBar
- Ex_ObjGetScrollPos
- Ex_ObjSetScrollPos
- Ex_ObjGetScrollRange
- Ex_ObjSetScrollRange
- Ex_ObjGetTrackPos
- Ex_ObjGetScrollInfo
- Ex_ObjSetScrollInfo
- Ex_ObjGetClassNameA
- Ex_ObjGetClassNameW
- Ex_ObjGetRect
- Ex_ObjClientToWindow
- Ex_ObjMove
- Ex_ObjLockPos
- Ex_ObjIsVisible
- Ex_ObjShow
- Ex_ObjEnable
- Ex_ObjGetAnimationInfo
- Ex_ObjSetAnimationInfo
- Ex_ObjBeginAnimation
- Ex_ObjHandEvent
- Ex_ObjHandEventFromID
- 控件消息
- 介紹
- 屬性分發
- 設置提示文本
- 獲取提示文本
- 組件狀態被改變
- 計算尺寸
- 獲取Tab焦點區域矩形
- 繪制背景
- 繪制非客戶區
- 繪制主題數據
- 系統控件
- 標題欄
- 圖標控件
- 系統按鈕
- 菜單
- 基礎控件
- 標簽
- 按鈕
- 普通按鈕
- 圖形按鈕
- 組圖按鈕
- 下拉按鈕
- 圖片框
- 鏈接框
- 選擇框
- 三態選擇框
- 單選框
- 分組框
- 進度條
- 滾動條
- 編輯框
- 豐富文本框
- 高級控件
- 組合框
- 列表框
- 選擇夾
- 瀏覽框
- 擴展控件
- 繪圖命令
- 關于繪圖引擎
- 設備上下文
- 畫布
- _excanvas_getlasterror
- _excanvas_setlasterror
- _excanvas_getlong
- _canvas_create
- _canvas_destroy
- _canvas_validate
- _canvas_beginpaint
- _canvas_endpaint
- _canvas_clear
- _canvas_drawimage
- _canvas_drawimagerect
- _canvas_drawimagerectrect
- _canvas_drawline
- _canvas_drawlinefrompen
- _canvas_drawimagefromdrawdata
- _canvas_drawimagegird
- _canvas_drawrectangle
- _canvas_fillrectangle
- _canvas_fillrectanglefrombrush
- _canvas_getdc
- _canvas_width
- _canvas_height
- _canvas_setbkmode
- _canvas_getbkmode
- _canvas_bitblt
- _canvas_bitblt_dc
- _canvas_alphablt
- _canvas_alphablt_dc
- _canvas_cliprect
- _canvas_cliphrgn
- _canvas_resetclip
- _canvas_savetofile
- _canvas_resize
- _canvas_drawrectanglefrompen
- _canvas_setfont
- _canvas_getfont
- _canvas_getlogfont
- _canvas_getpixel
- _canvas_calctextsize
- _canvas_drawtext
- _canvas_savetomemory
- _canvas_blur
- 圖像
- _image_width
- _image_height
- _image_createfromfile
- _image_destory
- _image_createfromstream
- _image_selectactiveframe
- _image_getframecount
- _image_copy
- _image_copyrect
- _image_createfrommemory
- _image_savetofile
- _image_getframedelay
- _image_createfromhicon
- _image_create
- _image_savetomemory
- _image_lockbits
- _image_createfromhres
- 畫筆
- _pen_create
- _pen_destory
- _pen_create_frombrush
- 畫刷
- _brush_create
- _brush_destroy
- _brush_createfromimage
- _brush_create_lineargradientfrompoint
- 字體
- _font_createfromfamily
- _font_create
- _font_destroy
- _font_getlogfont
- _font_createfromlogfont
- 路徑
- 區域
- 文本格式
- 效果
- 布局文件
- 關于XML
- 文件結構
- 特殊語法
- 主題文件
- 關于EXT
- 文件結構
- 貼圖文件
- 描述文件
- 制作主題
- 相關命令
- Ex_ThemeLoad
- Ex_ThemeFree
- Ex_ThemepData
- Ex_ThemeGetData
- Ex_ThemeGetColor
- Ex_ThemeGetRect
- Ex_ThemeDraw
- Ex_ThemeDrawEx
- Ex_ThemeDispatchDrawEx
- 緩動特效
- 關于特效
- 緩動種類
- 相關命令
- 授權機制