濮阳杆衣贸易有限公司

主頁 > 知識庫 > 把數(shù)據(jù)轉換成XML格式的好處

把數(shù)據(jù)轉換成XML格式的好處

熱門標簽:南寧網(wǎng)絡外呼系統(tǒng)運營商 本地電話機器人 東營電銷 400電話辦理包年 微信地圖標注合并了 高德地圖地圖標注服務中心 r語言數(shù)據(jù)可視化地圖標注 隨州外呼調(diào)研系統(tǒng) 如何修改多個百度地圖標注
    我們常常會碰到需要處理以各種格式(從以逗號或者制表符做分隔符的文件到更負載的格式)保存或者傳輸?shù)臄?shù)據(jù)的情況,對每一種格式你都需要對應的解析器(parser)。這一缺點減緩了開發(fā)進度,而且可能會導致錯誤的發(fā)生。一個解決方案就是把常用格式的數(shù)據(jù)轉化成XML文檔,然后對它進行保存、處理或者轉換成其它格式。
一個實例

現(xiàn)在已經(jīng)有好多種實現(xiàn)在軟件內(nèi)部或者軟件之間進行數(shù)據(jù)保存、導出、導入以及傳輸功能的數(shù)據(jù)格式。最常見的是定界格式(delimited format),如逗號或者制表符分隔數(shù)據(jù)格式以及定長數(shù)據(jù)格式。假設我們有一個地址簿程序,該程序提供把數(shù)據(jù)導出成逗號分隔以及固定長度這兩種格式的功能。

在逗號分隔格式中,用逗號來分隔同一個數(shù)據(jù)記錄中的不同字段,如清單A所示。而在固定長度數(shù)據(jù)格式中,記錄的每一個字段都應該有一個標準長度。清單B給出了一個固定長度格式的地址簿。

創(chuàng)建XML文檔

現(xiàn)在,讓我們解析輸入數(shù)據(jù)并把它轉換成XML文檔。XML文檔(即org.w3c.dom.Document)是全部文檔對象模型(DOM)的原始數(shù)據(jù)類型,并且它提供了對文檔數(shù)據(jù)的訪問。

你可以用執(zhí)行buildDocument(InputStream is)方法來創(chuàng)建與你的數(shù)據(jù)對應的文檔,如代碼清單C所示。該方法逐行讀取輸入數(shù)據(jù)流,并根據(jù)給定格進行來逐行分析。

如果你想解析分界格式數(shù)據(jù),你需要創(chuàng)建構造函數(shù)為PlainTextToXmlFormatter(String[ ] colName,String delim)的類的實例,其分界符可以是任何字符串。在固定長度格式的情況下,你應該使用第二種構造函數(shù)PlainTextToXmlFormatter(String[ ] colName,int[ ] colLen),它的一個參數(shù)為字段長度數(shù)組。在我們所給的地址簿例子中,各字段的長度分別為10、10、30以及10個字符。參數(shù)colName是保存了目標數(shù)據(jù)記錄的名字的數(shù)組,在我們給出的這個例子中,名字分別為名(firstName)、姓(lastName)、email以及電話號碼(phone)。

把數(shù)據(jù)行轉換為數(shù)據(jù)符號的實際解析過程也就是執(zhí)行getStringArray(String read,String delim)或者parseFixedLengthMessage(String read,int[ ] colLen)方法的過程。其返回值是一個String型數(shù)組,這個數(shù)組是上述兩個方法把給定輸入進行分解而得來的。如果數(shù)據(jù)格式不對,就會拋出一個例外并且終止解析過錯。調(diào)用setSkipError(true)方法就可以忽略例外并完成數(shù)據(jù)解析過程。調(diào)用這個方法可以防止拋出例外,但它仍允許程序向錯誤輸出流打印錯誤信息。

當行被解析成標記后,它們作為XML文檔的元素而加入到XML文檔之中。放入到元素之中的每一行記錄都有一個默認的名字line,你也可以調(diào)用setDataLineName()來指定名字。每一個數(shù)據(jù)記錄都是一個列元素,列元素的名字由相應的類構造函數(shù)提供,子元素加到行元素之中。

在輸入數(shù)據(jù)完全讀取之后,你就得到了一個有效的XML文檔,你可以進一步處理這個文檔。現(xiàn)在,由于數(shù)據(jù)是按眾所周知的樹狀結構來組織的,因此處理它非常簡單。例如,你可以把這個文檔送交給第三方,只要第三方知道該文檔的文檔類型定義(Document Type Definition ,DTD),那么他就可以很容易的處理文檔了。你還可以調(diào)用writeDocument(Document doc,OutputStream osOut)方法來保存這個文檔。代碼清單D就給出一個把XML文檔保存到一個文件中的例子。

用XSLT轉換來查看數(shù)據(jù)

你還可以把XML數(shù)據(jù)轉換成其它格式,并用不同的視圖來表示其內(nèi)容。最簡單的方法就是使用XSLT轉換,它提供了一種強大的面向樹的轉換語言實現(xiàn),可以把使用一種詞匯表的XML實例轉換成簡單文本、HTML或者使用其它詞匯表的XML。

對給定的XML輸入,你可以用XSLT語言來創(chuàng)建你所期望的輸出。例如,通過執(zhí)行transformData(InputStream xmlIn,InputStream xslIn,OutputStream transfOut),你就可以把XML數(shù)據(jù)轉換成一個HTML文檔。代碼清單E提供了XSLT轉換的一個例子,而清單F給出了地址簿條目的HTML視圖。

簡化對數(shù)據(jù)的管理

在本文中,我們通過分析PlainTextToXmlFormatter類而學會了如何把常用格式數(shù)據(jù)轉換成XML文檔。我們還看到了如何借助于XSLT轉換而用不同的視圖來表示XML文檔。當你需要處理各種格式的數(shù)據(jù)時,采納上述技術或許就就是一個好的解決方案,從而節(jié)省了你的寶貴時間并減少了出錯的可能性。

標簽:益陽 拉薩 德州 宿遷 寧夏 黃石 果洛 西雙版納

巨人網(wǎng)絡通訊聲明:本文標題《把數(shù)據(jù)轉換成XML格式的好處》,本文關鍵詞  把,數(shù)據(jù),轉,換成,XML,格式,;如發(fā)現(xiàn)本文內(nèi)容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《把數(shù)據(jù)轉換成XML格式的好處》相關的同類信息!
  • 本頁收集關于把數(shù)據(jù)轉換成XML格式的好處的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    剑阁县| 裕民县| 丰镇市| 莎车县| 新营市| 黑山县| 海南省| 邹城市| 增城市| 丁青县| 谢通门县| 汉川市| 乌恰县| 宁国市| 赫章县| 诏安县| 麻栗坡县| 安徽省| 石城县| 青神县| 岐山县| 包头市| 象山县| 上虞市| 宿州市| 阆中市| 桐庐县| 抚顺市| 时尚| 清河县| 锡林郭勒盟| 当雄县| 浏阳市| 淮北市| 汉阴县| 梅州市| 牙克石市| 芒康县| 灵石县| 资溪县| 孝昌县|