2010年7月28日 星期三

DOM NodeList 動態更新之注意事項

若我們利用 NodeList  取得節點集合後,若新增或刪除該集合內的節點,則 NodeList 馬上會進行更新,這就是 NodeList 具有隨時保持自身更新的特性,我們用簡單的例子來說明這項特性:
將以下 xml 檔案載入到 Java DOM 的 Document 文件內:

<rss version="2.0">
    <channel>
        <title>localhost</title>
        <link>http://localhost/test.xml</link>
        <description>test</description>
      
        <item>
            <title>google</title>
            <link>http://www.google.com.com/</link>
            <description></description>
        </item>
      
        <item>
            <title>yahoo</title>
            <link>http://tw.yahoo.com/</link>
            <description></description>
        </item>  
    </channel>
</rss>

以下為測試 NodeList 特性的 Method:

public void test(){
        NodeList nodelist=document.getElementsByTagName("item");
        //將 Document 的 item 集合存放至 NodeList
        System.out.println("刪除前");
        System.out.println("NodeList Length:"+nodelist.getLength());
        System.out.println("第一個 item 的 title 標籤內容:"
                +nodelist.item(0).getFirstChild().getFirstChild().getNodeValue());
      
        nodelist.item(0).getParentNode().removeChild(nodelist.item(0));
        //刪除第一個 item 元素
        System.out.println("刪除後");
        System.out.println("NodeList Length:"+nodelist.getLength());
        System.out.println("第一個 item 的 title 標籤內容:"
                +nodelist.item(0).getFirstChild().getFirstChild().getNodeValue());
}

下列為程式執行結果:

刪除前
NodeList Length:2
第一個 item 的 title 標籤內容:google
刪除後
NodeList Length:1
第一個 item 的 title 標籤內容:yahoo

由此可知,當 NodeList 內的節點集合受到更新或刪除時,NodeList 就會即時進行更新,故在使用 NodeList 時,要多加注意這項特性。

參考資料:

沒有留言:

張貼留言