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

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

使用Java Swing 創建一個XML編輯器

2019-11-18 15:37:25
字體:
來源:轉載
供稿:網友

  我想您一定對xml有所了解,說不定您現在還躍躍欲試想寫一段XML文本呢,可是現在能找到的跨平臺的、免費的XML編輯器太少了。
所以在本文中,我想介紹一下或者說帶您一步一步的開發一個簡單的XML編輯器,當然我們要用到一些最常見的java 2 Swing組件,不過這些都是免費的,有些是JDK中的,有些是可以從網上下載的。我想通過本文,你就可以創建一個屬于你自己的XML編輯器。

  先讓我介紹一下本文輯寫的思路。首先我想簡要的討論一下XML和為什么樹型結構比較適合用來顯示XML,然后我們來看一看JAXP API如何建立所需要的XML類的環境;然后我們將了解用來顯示一個圖形樹的JTree Swing組件;最后,我們將創建一個繼續JTree組件的可以重復使用的類,可以用來分析一個XML文檔,并把數據顯示在一個Jtree中。

  說到XML(eXtensible Markup Languge),人們往往把它當成是一種新的用于Web瀏覽器中的標記語言,就象Html或CSS一樣。其實,XML是一種數據表示語言,它答應你使用一種非常有效的方法來描述你的數據。XML能夠使你定義諸如“these three Words constitutes a heading”這樣的語句。XML答應你聲明任何類型的數據,而不是用來把這些數據顯示在網頁中。

  請看一看下面的XML實例:

<article>
<header>
<title> 使用Java Swing 創建一個XML編輯器
<suBTitle> 第一部分</subtitle>
</title>
<author> Wayne </author>
<header>
<content> 這是正文</content>
</article>


  請注重,這些元素和標準的HTML語句是不同的,但是它們看上去比較象HTML,這是因為XML和HTML都是來源于SGML語言。不同的是HTML有預定義的標簽集,而XML的語法則有許多靈活性,它答應你使用表意的標記如<author>來括在數據兩邊。你還要注重,所有的元素都從屬于根元素(上例中為<article>),有些元素則還有自己的子元素,如<subtitle>就是<title>的子元素。這樣的數據組織方式有三個好處:數據能夠更加表意,數據更加易維護而且數據更加輕易作為一個樹的結構表現出來,這就是我們為什么使用JTree對象來顯示XML數據的原因。假如你想對XML有更深的了解,請參閱天極網上的相關教程。

  JAXP是一個用于處理XML的Java API,它能夠使應用程序分析并且轉化XML文檔,它的功能有點象JDBC API,都是把函數功能抽象成一個個方法。你可以去Apache網站找到最新的Xerces分析器,其中含有最新的JAXP,下載下來以后把它放在你的類目錄中。
  下面讓我們看一下如何使用JTree Swing組件

  我們都知道,在自然界中,一棵樹通常都有一個非常粗的樹干,樹干上有許多樹枝分叉。每個樹杈和樹杈之間都有一定的聯系,因為它們都有同一個來源:樹干。這種繼續的關系并不只在樹枝中有,人類譜系也遵循相同的規律。從父母,到子女再到子女的子女,就這樣直到數不清為止。同樣,在數據存儲中,樹的概念也是一種使用同人類家譜樹一樣方法儲存數據的方法。樹的每一個樹杈稱為一個節點,每個有子節點的節點稱為父節點,所有的子節點的公共的父節點被稱為根節點。一個JTree組件就是一個簡單的樹數據結構的可視化表現形式。

  幾乎所有的XML編輯器都包括一個可視化的樹結構,能讓你編輯XML文檔中的元素。我們馬上就會構建一個編輯器,不過在此之前,先讓我們再了解一下JTree組件。一個節點在一棵樹的某個位置儲存數據,為了存儲數據,必須知道任何一個父節點和它們的子節點。javax.swing.tree包定義了一些非常有用的接口,提供了一種通用的方法構建和操作一個樹結構。

  TreeNode方法,用于訪問樹的節點的信息

  MutableTreeNode方法 用在一個可變的樹上(能夠添加或刪除子節點)

  TreeModel方法 用于創建和治理與樹有關的數據模型。

  接下來,我們將創建一個繼續JTree的類,提供分析XML文檔和用可視化JTree組件把節點顯示出來的功能。

  創建XTree組件

  XTree類由一個構造函數和三個方法組成,為了簡單起見我們的組件只能構建一個Xtree,在樹創建好之后不能進行處理它的節點。下面讓我們來看一個這個類。

  域:

  PRivate DefaultMutableTreeNode treeNode 這個成員變量儲存TreeNode對象用于存儲JTree的模型。 

  DefaultMutableTreeNode類是在javax.swing.tree中被定義的,默認提供了MutableTreeNode接口的一個實現。

  private DocumentBuilderFactory dbf

  private DocumentBuilder db

  private Document doc 這三個成員變量是JAXP的一部分,用來分析XML文本并轉化成DOM(Document Object Model) 對象。

  構造函數

  public XTree( String text )

  這個構造函數通過使用傳送到構造器中的XML文本創建一個XTree對象。在初始化一些與JTree超類和DOM分析對象有關的基本顯示屬性后,構造函數生成一個TreeModel 對象用來創建一個實際可視的樹。通過把DOM對象傳送到createTreeNode()方法來創建一個根節點,createTreeNode()方法返回一個DefaultMutableTreeNode類型的對象。這個對象然后被用來創建樹的TreeModel。

  方法

   private DefaultMutableTreeNode createTreeNode( Node root )

  這個方法采用一個DOM 節點,然后在子節點中遞歸直到所有的接點都被添加到DefaultMutableTreeNode中。這是一個遞歸方法,為了找到根節點下的每一個子節點,它每次都要調用自己。JTree然后就可以使用DefaultMutableTreeNode對象了,因為它已經是樹型了。

   private String getNodeType( Node node )

  這個方法,被createTreeNode()用來聯系一個字符串和某一種類型的節點。

   private Node parseXml()

  這個方法,用來分析XML文本字符串,它返回Node類型的對象,能夠被傳送到createTreeNode()方法中。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 隆尧县| 鹿泉市| 高台县| 金坛市| 屏边| 清丰县| 屏南县| 达拉特旗| 泊头市| 沂源县| 青川县| 高雄市| 慈利县| 南陵县| 天台县| 合山市| 玛纳斯县| 武川县| 张家口市| 平果县| 左权县| 隆化县| 通海县| 莱阳市| 嘉峪关市| 鄂伦春自治旗| 宝兴县| 钟山县| 楚雄市| 河北区| 无为县| 涟水县| 韶山市| 寿光市| 全椒县| 卢氏县| 衡阳市| 云林县| 扎鲁特旗| 舞阳县| 永年县|