摘 要:本文提出了一種在Linux電視平臺上實現動態主頁的方法,包括XML數據的定義,服務端和電視客戶端的數據交互以及客戶端的實現流程。
關鍵詞:動態主頁;XML數據;Tiny;XML分析器
中圖分類號:TN948.64 文獻標識碼:A 文章編號:1674-7712 (2014) 20-0000-02
在Linux網絡電視上主頁上,通常都會布局一些流行的視頻類或社交類應用,如Youtube,NetFlix或Facebook,其他的視頻或信息獲取則通過打開瀏覽器,輸入相應的網址來獲取,這樣對用戶的體驗較差,本文提出了一種在主頁原有應用的基礎上,將網絡服務端的信息實時更新到主頁上供用戶瀏覽和選擇的方法,改善用戶體驗。網絡服務端與電視客戶端的數據交換是通過XML(eXtensible Markup Language)即可擴展標記語言來實現,XML是一種簡單的數據存儲語言,使用一系列標記描述數據,容易理解、使用。用戶可以根據自己的需要定義自己的數據描述定義,并且只要任何需要存取該數據的程序(客戶端、服務器端)能夠正確的使用該數據描述中的標簽,就可以正確的產生或者消費該XML文件,從而實現在Internet環境下跨平臺、跨系統的數據交換。
一、實現方法
(一)XML配置文件
以下XML配置文件定義了電視動態主頁的節目清單顯示數據,格式如下:
(二)服務端和電視客戶端的數據交互
電視機上的應用程序會根據預先設定的網址向服務器端發起節目清單顯示請求,通常使用HTTP或者加密的HTTPS協議,Web服務器接收到請求后,會根據請求中的參數要求(例如用戶號碼)等信息查詢數據庫,從數據庫中提取相應的記錄,并直接輸出XML格式的文件給應用程序。這里服務器端需要把數據庫記錄的不同字段映射成XML中各個不同標簽,以便生成XML文件。可以通過Java/C++/PHP等程序編寫進行字符串的拼接以生產XML標簽及相應內容,也可以使用Java/C++/C#等語言中XML類先將數據庫記錄映射成內存對象,再調用相應類的輸出方法輸出XML文件。
電視機上的應用程序從服務器獲得XML文件后,就可以根據XML文件中的標簽含義進行解析,并直接顯示出來,或者轉換成HTML文件后通過瀏覽器展示給用戶,如圖1所示。
各種不同的應用程序可以對同一種XML文檔進行各種不同的靈活展示,從而實現與服務器端功能的完全解耦合。服務器端只需對來自不同客戶端的請求返回同樣格式的XML文件即可,當服務端的內容更新時,客戶端的代碼不需要做更改,反之,當客戶端的展示方式需要發生變化時,服務器端不需要做任何的更改。
(三)客戶端的實現
Linux網絡電視屬于嵌入式系統,其內存資源有限,要求XML文件的語法盡量簡潔明了。另外,電視機客戶端中XML解析器是必不可少的一個模塊,該解析器需要根據XML文件中的標簽定義將XML的數據正確地展示在電視界面上。本文采用Tiny XML 分析器,它是基于DOM模型的C++ XML解析器,適合存儲簡單數據,配置文件,對象序列化等數據量不是很大的操作。實現的主要流程如下:
(1)創建一個線程,用于處理數據下載和XML分析。
(2)通過HTTP下載入口http://xx/api/v2/models/14fe9ed76f0d8837b97f949bd04e5f59/menu.xml并保存。
(3)獲取城市、氣候、溫度、時間等信息,在主頁打開時顯示。
(4)比較APP節點信息是否有變更,若有變更,在本地創建相應的
(5)當用戶打開主頁時,按規劃的布局顯示
由于TinyXml是一個非校驗的解析器,代碼實現時,必須要對返回值進行檢查,避免TinyXml返回空指針造成內存訪問的錯誤。
二、結束語
本文是在Linux平臺上移植Tiny XML分析器,通過HTTP下載服務端的XML數據,采用Tiny XML分析XML數據,下載XML提供的資源文件保存在電視本地上,同時定時查詢服務器的數據變化,及時在主頁上更新顯示,實現了電視動態主頁,方便用戶瀏覽網絡資源,也為品牌客戶提供了一種增值服務渠道。
參考文獻:
[1]http://sourceforge.net/p/tinyxml/wiki/Home[OL].
[作者簡介]許輝福(1976.01-),男,福建安溪人,工程師,本科,研究方向:嵌入式系統。