MDA之路

          MDA,UML,XML,Eclipse及Java相關的Blog
          posts - 53, comments - 494, trackbacks - 0, articles - 2
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          DOM的HelloWorld!

          Posted on 2005-01-21 23:10 wxb_nudt 閱讀(571) 評論(0)  編輯  收藏

          在qq群中聊到了DOM,foxcrane要寫一個替換Node的程序,DOM的原理了解,也下載和配置了xerces-2_6_2,就是沒有時間寫個,于是打開Eclipse,new了一個Java Project,在構建路徑中把Xerces的jar包一古腦加了進去。然后寫了一個最簡單的DOM程序,要解析XML文件來自于前段時間寫的一個XML。因為明白DOM的原理,只用了5分鐘就搞定了這個DOM HelloWorld。

          package main;

          import java.io.IOException;

          import javax.xml.parsers.DocumentBuilder;
          import javax.xml.parsers.DocumentBuilderFactory;
          import javax.xml.parsers.ParserConfigurationException;

          import org.w3c.dom.Document;
          import org.w3c.dom.NamedNodeMap;
          import org.w3c.dom.Node;
          import org.w3c.dom.NodeList;
          import org.xml.sax.SAXException;

          /**
           * @author wxb
           *
           * TODO 要更改此生成的類型注釋的模板,請轉至
           * 窗口 - 首選項 - Java - 代碼樣式 - 代碼模板
           */
          public class DOMTestMain {

           public static void main(String[] args) {
            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
            DocumentBuilder db=null;
            Document doc=null;
            try {
             db = dbf.newDocumentBuilder();

            } catch (ParserConfigurationException e) {
             // TODO 自動生成 catch 塊
             e.printStackTrace();
            }
            try {
             doc = db.parse("DOMTestXML.xml");
            } catch (SAXException e1) {
             // TODO 自動生成 catch 塊
             e1.printStackTrace();
            } catch (IOException e1) {
             // TODO 自動生成 catch 塊
             e1.printStackTrace();
            }
            
            NodeList nl = doc.getElementsByTagName("email");
            for(int i =0;i   Node my_node = nl.item(i);
             String message = my_node.getFirstChild().getNodeValue();
             System.out.println(message);
            }
            NodeList n2 = doc.getElementsByTagName("link");
            Node node1 = n2.item(1);
            NamedNodeMap map = node1.getAttributes();
            Node subnode=map.getNamedItem("manager");
            System.out.println(subnode.getNodeValue());

           }
          }

          解析的DOMTestXML.xml就放在當前目錄,為了方便,內容如下:

          <?xml version="1.0" encoding="UTF-8"?>
          <personnel>

            <person id="Big.Boss">
              <name><family>Boss</family> <given>Big</given></name>
              <email>chief@foo.com</email>
              <link subordinates="one.worker two.worker three.worker four.worker five.worker"/>
            </person>

            <person id="one.worker">
              <name><family>Worker</family> <given>One</given></name>
              <email>one@foo.com</email>
              <link manager="Big.Boss"/>
            </person>

            <person id="two.worker">
              <name><family>Worker</family> <given>Two</given></name>
              <email>two@foo.com</email>
              <link manager="Big.Boss"/>
            </person>

            <person id="three.worker">
              <name><family>Worker</family> <given>Three</given></name>
              <email>three@foo.com</email>
              <link manager="Big.Boss"/>
            </person>

            <person id="four.worker">
              <name><family>Worker</family> <given>Four</given></name>
              <email>four@foo.com</email>
              <link manager="Big.Boss"/>
            </person>

            <person id="five.worker">
              <name><family>Worker</family> <given>Five</given></name>
              <email>five@foo.com</email>
              <link manager="Big.Boss"/>
            </person>

          </personnel>

          輸出如下:

          chief@foo.com
          one@foo.com
          two@foo.com
          three@foo.com
          four@foo.com
          five@foo.com
          Big.Boss

          解析了6個節點值和一個節點屬性。Eclipse的自動import功能實在是太帥了,如果沒有這個功能,光是import可能就不止20分鐘把。

           


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 吉木萨尔县| 白玉县| 府谷县| 垣曲县| 鸡东县| 图木舒克市| 平果县| 资兴市| 博乐市| 开封县| 万全县| 铜鼓县| 理塘县| 天祝| 上饶市| 沙坪坝区| 宽甸| 临城县| 海城市| 武夷山市| 陕西省| 延安市| 施秉县| 江达县| 榆中县| 临邑县| 博爱县| 中阳县| 桓仁| 铅山县| 女性| 沙湾县| 抚州市| 罗城| 郸城县| 卢龙县| 高唐县| 罗甸县| 交口县| 石城县| 桐柏县|