国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

用XML和Servlet構建在線問答系統

2019-11-18 12:49:12
字體:
來源:轉載
供稿:網友

  xml ,即可擴展標記語言( Extensible Markup Language ),被譽為構造未來
  Web 的新工具。 Html 著重描述 Web 頁面的顯示格式,而 XML 著重描述的是文檔的內容。 XML 的特長在于描述層次結構的數據,或賦予原本雜亂的信息一種清楚的結構。
    
  在 Web 上,在線測試的問答過程一般是用表單作為用戶界面的,無處不在的網絡連接使得這種測試可在任何地方進行。本文所討論的也正是這樣一個系統。所不同的是,它用XML 描述問題,用 Servlet 動態生成顯示給用戶的 HTML 頁面,并能夠對用戶的回答做出評價。雖然實現類似功能可以有許多種不同方案,但采用 XML 與 Servlet 將使得整個實現過程更為簡單。   
  一、 XML 與 DOM 、 SAX 、 DTD   
  本文假設讀者已經熟悉 Servlet 的實現過程,因而此處不再贅述。 XML 相對較新,下
  面對它的基本概念作簡單介紹。   
  XML 發展自更為復雜的 SGML ( Standard Generalized Markup Language ,標準通用標記語言)。在 SGML 和 XML 中,文檔的構成方法可以由 DTD ( Document Type Definition ,文檔類型定義)描述。 DTD 可以是嵌入的,也可以是一個獨立的文件。 DTD 定義了文檔的合法結構和各組成元素之間的關系。   
  DOM ( Document Object Model ,文檔對象模型)用一種樹狀結構存儲 XML 文檔。 DOM 是一種標準模型,由 W3C 治理。這種包羅萬象的對象模型將所有的文檔元素都看成能夠輕易治理的對象,整個樹狀結構以 Document 對象為根,其余所屬元素及屬性構成
  根的子樹。   
  SAX ( Simple API for XML )是一種基于事件的模型,可用于避免構造文檔完整的樹狀結構。假如文檔非凡龐大或僅對其中一部分感愛好, SAX 就顯得非凡有用了。 SAX事件由解析器在進入或離開文檔、元素、屬性、子樹時產生。該模型可在不關注文檔完整結構的情況下測定其特征或相關數據。   
  本文將使用 XML 解析器創建問題文檔的對象模型,再利用該模型動態生成 HTML 頁面。
  這種實現方法使得該系統不必創建更多分散的 HTML 頁面就可以提供大量問題。   
  現在已經有許多可用的 XML java 解析器。本文選用的是 IBM 的 XML Parser for Java 1.1.16 ( XML4J ),可從 http://www.alphaworks.ibm.com/ 下載。相對其它解析器而言,該解析器所提供的功能最為完善,如同時支持 DOM 和 SAX 等,并提供了最好的文檔。
  二、問題文檔的結構概覽   
  [[The No.1 Picture.]]
  【清單 2 】該類中的所有方法都用于簡化對文檔模型的訪問。它們都基于 W3C 定義的標準 Java 接口,接口定義可在 org.w3c.dom 包中找到。大多數 XML 解析器提供擴展功能,但遵從接口規范有利于提高代碼的兼容性。   
  DomUtil 類的 readDocument方法完成的任務是:對于給定的文件,經解析器分析返回
  Document 對象。該方法的執行過程可以簡述為:創建解析器實例,設置文件輸入流,讀入文件,關閉輸入流,返回 Document 對象。   
  findNode 方法完成的任務是:對于給定的節點對象,在其子樹中搜索并返回與給定名字匹配的孩子節點。它從指定節點開始搜索文檔樹,若當前節點與給定名字匹配,則返回;否則用 getChildNodes方法獲得它的所有孩子節點,遞歸執行上述搜索過程;假如不能找到所要求的節點,則
  返回 null 。   
  getNodeAttribute 方法根據給定的節點及屬性名字,返回其屬性值。假如節點不是一個
  元素( Element )或指定屬性不存在,則返回 null ,否則返回該屬性的字符串值。
    PRintSuBTree方法將以給定節點為根的子樹輸出到指定的 PrintWriter 。該方法也要執行一個遍歷過程,這一點和 findNode方法相似。在這里應該注重的是,雖然瀏覽器能夠自動處理某些結束標記被省略的情況(如 標記和 標記不匹配),但 XML 要求完整地寫出所有開始和結束標記。   
  DOMUtil 類提供了兩個版本的 printSubtree 方法,其中第二個方法多一個根節點參數。一般我們需要輸出的是給定節點下的子樹而非該節點本身,第一個版本較為常用,它只需 PrintWriter 和 Node 兩個參數。   
  節點類型要么是元素( Element ),要么是文本( Text )。對于元素節點, printS
  ubtree方法先輸出對應的開始標記,然后是它的子樹,最后輸出結束標記。開始標記由元素名字在兩邊加上尖括弧構成;結束標記也相似,但要在元素名字前加斜杠。對于文本節點, printSubtree方法直接輸出節點值。    QuestionView 類負責 XML 文檔的
  分析,并按照要求生成 HTML 代碼,如清單 3 所示。當然,實際的分析過程是依靠于XML 解析器的。在建構函數中我們使用 DOMUtil 類來提取所需的節點和屬性,并把它們存儲為實例變量。 getQuestionPage 方法用于生成 HTML 代碼,這是一個相當復
  雜的工作。為便于閱讀和重用,我們把大部分格式化操作封裝為另外一個工具類 HTMLUtil 。 HTMLUtil 類的代碼如清單 4 所示。這些方法帶來的便利之處在于,只需把必要的參數傳遞給它,余下的格式化任務就能夠自動完成了。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 抚顺县| 应城市| 乐都县| 镇原县| 阿鲁科尔沁旗| 宝坻区| 图们市| 友谊县| 桐庐县| 宜都市| 神池县| 松潘县| 靖西县| 永顺县| 平昌县| 平原县| 烟台市| 加查县| 平江县| 通山县| 剑阁县| 阿城市| 太和县| 峨眉山市| 延庆县| 汤原县| 焦作市| 平塘县| 勐海县| 海口市| 府谷县| 和静县| 张掖市| 兴业县| 綦江县| 尚义县| 绥滨县| 苏州市| 玉林市| 乐至县| 哈尔滨市|