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 阅读(569) 评论(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分钟把。

 


只有注册用户登录后才能发表评论。


网站导航: