若我們利用 NodeList 取得節點集合後,若新增或刪除該集合內的節點,則 NodeList 馬上會進行更新,這就是 NodeList 具有隨時保持自身更新的特性,我們用簡單的例子來說明這項特性:
2010年7月28日 星期三
2010年7月26日 星期一
在 Java 內使用 SQL 指令儲存 ' \ ' 字元的注意事項
由於 ' \ ' 在 Java 與 SQL 內均判定為跳脫字元,故若想利用 Java 連結 SQL 後,在資料庫內儲存跳脫字元 ' \ ',則除了在 Java 內使用 " \\ " 來表示 ' \ ' ,還要在輸入 SQL 指令時再使用 " \\ " ,故實際寫法為:
Java 物件陣列化
雖然這是很基本的問題,但當時卻卡了快半天才搞定,主因在於當該物件具有建構元時,要該如何讓該變數具有設定建構元且又有陣列化的方法,下列是簡單的陣列宣告:
int[] i = new int[2]; // 宣告 int 且陣列大小為2的變數 i
i[0]=1; // i[0]初值為1
i[2]=2; // i[1]初值為2
上面的程式碼應該對大家來說是小菜一疊,下列則是使用具有建構元的 class 產生物件並陣列化:
int[] i = new int[2]; // 宣告 int 且陣列大小為2的變數 i
i[0]=1; // i[0]初值為1
i[2]=2; // i[1]初值為2
上面的程式碼應該對大家來說是小菜一疊,下列則是使用具有建構元的 class 產生物件並陣列化:
2010年7月22日 星期四
放棄 Neko HtmlParser ,改用 Cobra HtmlParser 解析網頁
之前發佈的文章 使用 Neko HtmlParser 產生 Html DOM ,發現到 Neko HtmlParser 經常發出:
Exception in thread "main" org.w3c.dom.DOMException:
HIERARCHY_REQUEST_ERR:
An attempt was made to insert a node where it is not permitted.
Exception in thread "main" org.w3c.dom.DOMException:
HIERARCHY_REQUEST_ERR:
An attempt was made to insert a node where it is not permitted.
2010年7月19日 星期一
2010年7月18日 星期日
利用 Xpath( Xml Path Language XML查詢語言)來達到搜索功能
雖然我們學會了 Xml DOM 與 Html DOM ,但當 DOM 內容龐大時,要如何找出我們所需的節點內容呢?此時就能使用 Xpath( Xml Path Language XML查詢語言)來達到快速查詢的功能。
Xpath 本身就是一種 Xml 技術的查詢語言,在1999年11月16日成為 W3C 的建議規格,我們可利用 Xpath 查詢語言與運算式當作搜索條件,由於 Xpath 語言內容較為簡單,故在此就不再多作敘述,有興趣可查詢參考資料的內容。以下為 Java 使用 Xpath 的程式碼:
Xpath 本身就是一種 Xml 技術的查詢語言,在1999年11月16日成為 W3C 的建議規格,我們可利用 Xpath 查詢語言與運算式當作搜索條件,由於 Xpath 語言內容較為簡單,故在此就不再多作敘述,有興趣可查詢參考資料的內容。以下為 Java 使用 Xpath 的程式碼:
使用 Neko HtmlParser 產生 Html DOM
這次專題所選用的 HtmlParser 是採用有點歷史的 Neko HtmlParser + xerces ,其中 Neko 作者本身是 IBM 的 xerces 團隊的主力開發者,對 DOM 解析領域相當精深,再加上 Neko HtmlParser 具有不錯的 Html 標籤解析與清理效果。雖然我在最近一個禮拜尋找與測試其他的解析器,例如最多人使用的 HtmlParser 以及較為冷門的 Cobra HtmlParser ,但仔細比較之後,還是 Neko HtmlParser 較為好用。
2010年7月16日 星期五
Java 使用 import 載入套件時的注意事項
不同於 #include 將檔案內容載入進來,Java的 import 只是請編譯器幫我們在會使用到的 class 或 method 上加註套件名稱,例如我們要使用 Document 和 Node 的 class 則可以使用下列兩種寫法:
2010年7月7日 星期三
將 DOMSource 匯入 外部DTD
本次專題在 XML 的存取與修改上,是使用 TransformerFactory 的套件,而該套件的 Transformer 物件內含的 transform(Source source ,Result result) 轉換函數,在 source 為 DOMSource 時,是無法順利寫入 外部DTD 。因為光是使用 DOMSource內的 setSystemId() 來進行設定,是無法真正將 外部DTD置入,故需要利用 Transformer 物件內的 setOutputProperty(String name,String value) 來強制 DOMSource變更設定。
產生具有 外部DTD 的 Document 文件
一般建立 Document 文件無非是使用文件檔案載入 documentbuilder.parse(File); ,或是產生空白的 Document 文件 documentbuilder.newDocument(); ,然而 org.w3c.dom 套件 提供我們產生具有 外部DTD 的 Document 文件,就是使用 DOMImplementation 介面,其方式如下:
2010年7月5日 星期一
XML 載入 DOM 時, DTD 的存放位置與顯示方式
當 XML 載入 DOM 時,我們將所有資料放置在 Document 物件內,若要查看 XML 內的 DTD(Document Type Definition)資料內容,必須先行宣告 DocumentType 物件,並使用 Document 內的函數將 DTD 載入至 DocumentType內,再利用 DocumentType 內的 getInternalSubset() Method 加以顯示,如下列程式範例:
2010年7月2日 星期五
Java 視窗佈局管理 - GirdBagLayout 格群佈局管理員
原本設定視窗時,必須要利用 setBounds(int x,int y,int weight,int height) 來慢慢調整,尤其單位是使用 pixels ,在操作上十分麻煩,故改用 GirdBagLayout 來管理元件間的佈置。雖然 GirdBagLayout 是所有視窗佈局管理員內操作最為複雜的,但操作熟練以後,發現元件間的佈置更為方便了。
事件處理的重複註冊問題
起初我將各個功能視窗的生成,分別製作成 method 以方便管理,並自然而然在各 method 內幫元件進行事件處理的觸發註冊,然而彼此視窗間,時常會有返回先前視窗的動作,此時很容易會產生事件處理重複註冊的 Bug。
為求理解上的方便,故我們直接設定按下按鈕時,會先釋放舊有的視窗並重新產生原本的新視窗,做出類似視窗間重複返回的動作,如下列程式:
訂閱:
文章 (Atom)