报课、招生咨询电话:010-51268840/41

首页 > 计算机考试 > JAVA考试认证 >
→论坛登陆 用户名  密码  
最近在想Interface与Object之间的关系问题?

作者: 发布时间:2008-06-03 15:41:03 来源:育路计算机考试
java中有专门读取xml文件的类和方法,下面是一个从xml文件中读取数据到标准输出的例子,代码已经通过测试,贴出来仅供参考。

  import java.io.*;
  import javax.xml.parsers.*;
  import org.xml.sax.*;
  import org.w3c.dom.*;
  public class DOMDemo
  {
  //设置输出编码格式
  static final String outputEncoding="UTF-8";
  private PrintWriter out;
  DOMDemo(PrintWriter out)
  {
  this.out=out;
  }
  private void print(Node node)
  {
  //打印节点名称
  out.println("NodeName=\""+node.getNodeName()+"\"");
  //打印节点URI
  String value=node.getNamespaceURI();
  if(value!=null)
  {
  out.println("URL=\""+value+"\"");
  }
  //打印节点前缀
  value=node.getPrefix();
  if(value!=null)
  {
  out.println("Prefix=\""+value+"\"");
  }
  //打印节点本地名称
  value=node.getLocalName();
  if(value!=null)
  {
  out.println("LocalName=\""+value+"\"");
  }
  //打印节点值
  value=node.getNodeValue();
  if(value!=null)
  {
  out.println("NodeValue=");
  if(value.trim().equals(""))
  {
  out.println("[WS]");
  }
  else
  {
  out.println("\""+node.getNodeValue()+"\"");
  }
  }
  }
  private void echo(Node node)
  {
  int type=node.getNodeType();
  switch(type)
  {
  //属性节点
  case Node.ATTRIBUTE_NODE:
  out.println("ATTR");
  print(node);
  break;
  //CDATA
  case Node.CDATA_SECTION_NODE:
  out.println("CDATA");
  print(node);
  break;
  //注释
  case Node.COMMENT_NODE:
  out.println("COMMENT");
  print(node);
  break;
  //段落节点
  case Node.DOCUMENT_FRAGMENT_NODE:
  out.println("DOC_FRAGMENT");
  print(node);
  break;
  //文档节点
  case Node.DOCUMENT_NODE:
  out.println("DOC");
  print(node);
  break;
  //文档类型节点
  case Node.DOCUMENT_TYPE_NODE:
  out.println("DOC_TYPE");

 print(node);
  break;
  //元素节点
  case Node.ELEMENT_NODE:
  out.println("ELEMENT");
  print(node);
  //得到该节点所有属性
  NamedNodeMap atts=node.getAttributes();
  for(int i=0;i {
  Node att=atts.item(i);
  //递归调用
  echo(att);
  }
  break;
  //实体节点
  case Node.ENTITY_NODE:
  out.println("ENTITY");
  print(node);
  break;
  //实体引用节点
  case Node.ENTITY_REFERENCE_NODE:
  out.println("ENTITY_REF");
  print(node);
  break;
  //处理说明节点
  case Node.NOTATION_NODE:
  out.println("NOTATION");
  print(node);
  break;
  //预处理节点
  case Node.PROCESSING_INSTRUCTION_NODE:
  out.println("PROC_INST");
  print(node);
  break;
  //文本节点
  case Node.TEXT_NODE:
  out.println("TEXT");
  print(node);
  break;
  //未知节点
  default:
  out.println("UNKNOWN NODE:"+type);
  print(node);
  }
  //遍历该节点子节点
  for(Node child=node.getFirstChild();
  child!=null;child=child.getNextSibling())
  {
  echo(child);
  }
  }
  public static void main(String[] args)
  {
  //生成一个DocumentBuilderFactory
  DocumentBuilderFactory dbf=
  DocumentBuilderFactory.newInstance();
  //生成一个DocumentBuilder
  DocumentBuilder db=null;
  try
  {
  db=dbf.newDocumentBuilder();
  }
  catch(ParserConfigurationException pce)
  {
  System.out.println(pce.toString());
  }
  String fileName=args[0];
  //生成文档
  Document doc=null;
  try
  {
  //解析文档
  doc=db.parse(new File(fileName));
  }
  catch(IOException ioe)
  {
  System.out.println(ioe.toString());
  }
  catch(SAXException se)
  {
  System.out.println(se.toString());
  }
  try
  {
  //显示DOM树
  OutputStreamWriter outWriter=
  new OutputStreamWriter(System.out,outputEncoding);
  new DOMDemo(new PrintWriter(outWriter,true)).echo(doc);
  }
  catch(UnsupportedEncodingException uee)
  {
  System.out.println(uee.toString());
  }
  }
  }

  编译、运行如下:

  E:\gongcheng>javac DOMDemo.java

  E:\gongcheng>java DOMDemo aaa.xml

  运行结果省略。其中的aaa.xml是相应的xml文件。

  综上,主要用的类有:DocumentBuilderFactory,DocumentBuilder,NamedNodeMap,用到的接口有Document,Node,并且用到了递归调用,输出流,本人认为该例子是初学者参考学习的好例子

    育路网

 
 
                                        
评论】【加入收藏夹】【 】【打印】【关闭
育路网2007年夏令营联展
 更多有关新闻:
 
·[考试动态2008年医师资格考试网上报名须知 ·[考试动态2008年医师资格考试3月10日开始网
·[考试动态卫生部医师资格考试委员会公告 ·[考试动态2008年医师考试于9月20至21进行
·[考试动态关于北京考区2008年度国家医师资 ·[考试动态崇文区卫生局关于北京考区2008年
·[考试动态丰台区卫生局关于北京考区2008年 ·[考试动态2008年上海市医师资格考试(考区
·[考试动态2008年医师资格考试(天津考区) ·[考试动态惠州市卫生局关于2008医师资格考
·[考试动态无锡市关于2008年医师资格考试网 ·[考试动态关于珠海市2008年医师资格考试的
·[考试动态韶关市关于2008年医师资格考试网 ·[考试动态深圳市关于2008年医师资格考试深
·[考试动态杭州市卫生局关于2008年医师资格 ·[考试动态丽水市关于2008年医师资格考试报
发表评论
用户名: 密码:
验证码: 匿名发表
课程搜索:
选择分类:
课程关键字:
课程 学校
 2008年首都高校秋季招生
北京理工大学2008年招生简章
北京文理研修学院2008年招生简章
北京建设大学2008年招生简章
北京中山学院2008年招生简章
北京城市学院2008年招生简章
培黎职业学院2008年招生简章
北京金融学院2008年招生简章
北京吉利大学2008年招生简章
北方工商管理学院2008年招生简章
 本周推荐课程
·初中起点雅思半年脱产 ·启德雅思6分冲刺课程
·新概念1+2册慢速精讲课 ·环球新托福100分强化
·北文王长喜四级强化班 ·英语四、六级培训课程
·海文考研数学课程 ·海文考研英语课程
·北大企业管理高级研修班 ·清华企业领导人研修班
·中美高中生交换项目 ·北工大中加学院2+2本科
·劳动和社会保障部物流师 ·物业管理师职业培训
·市场营销经理国际资格 ·现场管理实务培训
清华大学留学
中法管理硕士预科班
课程咨询热线:010-51268840 51268841
 最新新闻
·2008年乌鲁木齐市将招考376名公务员
·陕西公务员面试分数确定空缺职位调剂办法
·新疆区确定公务员招考笔试加分对象和标准
·2009年公务员考试申论热点:抗震救灾信息公开
·新疆:2007年1月20日地方公务员考试面试真题
·新疆:2007年1月21日地方公务员考试面试真题
·新疆:2007年1月22日地方公务员考试面试真题
·新疆:2007年8月20-21日公务员考试面试真题
·河南:2008年法检系统招考《申论》备考指南
·湖南:08年长沙市考录公务员有关面试事宜的通
 育路社区            进入>>
 
学员报名服务中心: 北京北三环西路32号恒润中心1806(交通位置图
咨询电话:北京- 010-51268840/41 传真:010-51418040 上海-021-64392659、64397431
育路网-中国新锐教育社区: 北京站 | 上海站 | 郑州站| 武汉站
本站法律顾问: 邱清荣律师
北京育路互联科技有限公司版权所有 | 京ICP备05012189号