轉(zhuǎn)帖|其它|編輯:郝浩|2012-02-22 23:30:35.000|閱讀 362 次
概述: 本章節(jié)主要介紹如何在Text Control中使用XML文件,包括如何打開XML文件,以及如何與CSS文件及DTD文件協(xié)同工作。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
本章節(jié)主要介紹如何在Text Control中使用XML文件,包括如何打開XML文件,以及如何與CSS文件及DTD文件協(xié)同工作。
本章節(jié)相應(yīng)的源代碼可以在TX Text Control.NET的安裝目錄中找到:
Samples\WinForms\VB.NET\ XMLBasics
Samples\WinForms\CSharp\ XMLBasics
(一)示例程序
示例程序中只有一個(gè)【Open File...】菜單項(xiàng),源代碼與其它Text Control程序并沒有多大的區(qū)別,僅僅是在調(diào)用Load方法時(shí)選擇了TXTextControl.StreamType.XMLFormat作為參數(shù),所以在文件對(duì)話框中只顯示XML文件:
[C#]
private void mnuFile_Open_Click(object sender, System.EventArgs e)
{
textControl1.Load(TXTextControl.StreamType.XMLFormat);
}
通過這種方式打開一個(gè)XML文件,Text Control不僅僅是加載XML文件,還會(huì)依照DTD文件自動(dòng)地對(duì)XML文件運(yùn)行驗(yàn)證,同時(shí)會(huì)依照CSS中的樣式設(shè)置來格式化XML文件。下面就進(jìn)一步的討論XML、CSS和DTD三種文件。
(二)XML文件
該示例程序使用的XML文件包含一個(gè)地址信息:
<?xml version="1.0"?>
<?XML:stylesheet type="text/css" href="address.css"?>
<!DOCTYPE address SYSTEM "address.dtd">
<address>
<address_record>
<name>Paul</name>
<street>Baker Street</street>
<city>London</city>
<email>[email=paul@hotmail.com]paul@hotmail.com[/email]</email>
</address_record>
<address_record>
<name>George</name>
<email>[email=george@hotmail.com]george@hotmail.com[/email]</email>
</address_record>
</address>
需要注意的是,XML文件并不像HTML和RTF文件那樣包含顯示格式的相關(guān)信息。
(三)CSS文件
在XML文件的第二行,我們可以看到XML文件引用了address.css文件,該CSS文件中指明了address對(duì)象應(yīng)該按照表格進(jìn)行顯示,address對(duì)象的每項(xiàng)數(shù)據(jù)單獨(dú)顯示在表格的單元格中,表格有一個(gè)像素的邊框,字體大小為11個(gè)像素。
address { display: table }
address_record { display: table-row}
name, street, city, email { display: table-cell; border: 1px; font-size: 11pt }
加載address.xml之后,可以在Text Control中看到以下格式的文本
通過修改CSS文件可以調(diào)整數(shù)據(jù)的顯示樣式,例如,將之前使用的表格顯示方式調(diào)整為列表顯示方式:
name { display: block; font-size: 14pt; color: blue }
street, city, email { display: list-item; font-size: 11pt}
(四)DTD
DTD文件用于規(guī)定XML文件中元素的相關(guān)信息,元素應(yīng)該是順序形式還是級(jí)聯(lián)形式。下面的DTD示例文件指明了一個(gè)adress包含一個(gè)或者多個(gè)address_record元素,每個(gè)address_record可以包含name、street、city和email元素,其中street和city是可選的元素。
<!ELEMENT address ( address_record+ )>
<!ELEMENT address_record ( name, street?, city?, email )>
<!ELEMENT name (#PCDATA )>
<!ELEMENT street (#PCDATA )>
<!ELEMENT city (#PCDATA )>
<!ELEMENT email (#PCDATA )>
當(dāng)加載XML文件時(shí),Text Control會(huì)根據(jù)DTD文件來檢查該XML文件是否正確,如果XML文件中的數(shù)據(jù)不符合DTD文件中相應(yīng)元素的定義,將會(huì)產(chǎn)生一個(gè)錯(cuò)誤信息。
這種嚴(yán)格的錯(cuò)誤檢查也是XML文件的優(yōu)勢(shì)之一,通過這種錯(cuò)誤檢查可以確保XML文件有一個(gè)固定的結(jié)構(gòu),以便于其它應(yīng)用程序使用。
(五)XML模式下的編輯操作
下面將演示普通文本編輯和XML文件編輯之間的一些差異。使用的源代碼可以在以下目錄中找到: ?
Samples\WinForms\VB.NET\ XMLEditing
Samples\WinForms\CSharp\ XMLEditing
運(yùn)行示例程序并加載address_list.xml文件,你會(huì)發(fā)現(xiàn)在按鈕欄中會(huì)多出三個(gè)下拉框:
你不必關(guān)心這些下拉框該如何創(chuàng)建,因?yàn)檫@是ButtonBar內(nèi)置的功能。
第一個(gè)下拉框顯示了當(dāng)前XML字段使用的樣式,如果你按下方向鍵中的向下鍵,顯示內(nèi)容將根據(jù)你當(dāng)前字段的類型從name變?yōu)閟treet、city或email。第二個(gè)下拉框?qū)@示可以插入的XML字段。
你可以選擇插入一個(gè)完整的address記錄,或其中的一個(gè)節(jié)點(diǎn)。根據(jù)DTD文件中的定義,并不是所有節(jié)點(diǎn)都是可以進(jìn)行插入的。例如:你點(diǎn)擊文檔中第一行的Paul,并試圖插入一個(gè)street節(jié)點(diǎn),程序?qū)⒊霈F(xiàn)一個(gè)錯(cuò)誤,因?yàn)檫@條記錄已經(jīng)包含了street節(jié)點(diǎn),如果插入Ringo就是正確的。
第三個(gè)下拉框是用于刪除XML字段的,所有操作都是根據(jù)DTD文件中的定義來執(zhí)行的,你可以根據(jù)DTD文件來查看哪些操作時(shí)允許的,哪些是被禁止的。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:葡萄城控件技術(shù)團(tuán)隊(duì)博客