文章探索:   分类:    关键字:  
  + 栏目导航
  + 相关文章
Ajax核心:XMLHTTP组件相关技术资料
远程获取内容,并将内容存在本地电脑..
xmlhttp组件获取远程文件并筛选出目标..
XMLHTTP对象及其方法
把HTML表单提交的数据转化成XML文件
利用XMLHTTP无刷新添加数据之Post篇
Js+Xml:不刷新页面获取对应网址的网页..
xml(元标记语言)学习基础一
Java语言编程中更新XML文档的常用方法..
简析JAVA中的XML编程
XML及其技术指南
XML教程(2)--XML元素与XML属性值
XML教程(1)--严格的语法
从XML到Java代码的数据绑定之一
神奇的XML--突破CGI权限的约束
基于XML的数据库总体分析
XML 中的常见问题(3)
XML 中的常见问题(2)
XML 中的常见问题(1)
一个简单的XML Schema的例子
Web设计中如何使用XML数据3
Web设计中如何使用XML数据2
Web设计中如何使用XML数据1
大话XML(3)XML的语法
构造未来Web页面的工具语言-- XML
不离开页面刷新数据
文件上传的实现
XML的产生
将XML文件链接至HTML网页
动态产生XML文档的几种方式


技术教程 -> XML教程 ->  
简析JAVA中的XML编程
来源:转载   人气:1678   录入时间:2007-11-8
     前段时间,本站刊登了笔者的《简析Delphi中的XML编程》(详见http://www.ccw.com.cn/htm/center/prog/02_10_17_4.asp)一文后,有许多读者纷纷与笔者
     取得联系,在交流XML目前的应用范围以及未来发展方向的同时,更希望笔者能再介绍一下JAVA中的XML编程。今天笔者有空编写了一个JAVA版的XML演示程序,希望对正在或想要学习XML编程的新老读者有所帮助。
     
     笔者还是通过上一次介绍的关于“学生花名册”的XML文件实例来介绍JAVA中的XML读写操作。文件结构如下所示,把此文件命名为Input.xml,如果您还对XML结构感到比较陌生,建议先看看上一文中关于XML文件的说明。
     
     
     
     <学生花名册>
     
     <学生 性别 = "男">
     
     <姓名>李华
     
     <年龄>14
     
     <电话>6287555
     
     
     
     <学生 性别 = "男">
     
     <姓名>张三
     
     <年龄>16
     
     <电话>8273425
     
     
     
     
     
     
     首先建一个简单的Bean来保存学生信息,命名为StudentBean,代码如下所示:
     
     public class StudentBean {
     
     private String sex; //学生性别
     
     private String name; //学生姓名
     
     private int age; //学生年龄
     
     private String phone; //电话号码
     
     
     public void setSex(String s) {
     
     sex = s;
     
     }
     
     
     public void setName(String s) {
     
     name = s;
     
     }
     
     
     public void setAge(int a) {
     
     age = a;
     
     }
     
     
     public void setPhone(String s) {
     
     phone = s;
     
     }
     
     
     public String getSex() {
     
     return sex;
     
     }
     
     
     public String getName() {
     
     return name;
     
     }
     
     
     public int getAge() {
     
     return age;
     
     }
     
     
     public String getPhone() {
     
     return phone;
     
     }
     
     }
     
     
     接着写XML的测试类,笔者把这个类命名为XMLTest,为了读写XML文件,需要导入如下JAVA包,“//”后为注释说明,笔者的环境是JDK 1.3.1_04,XML解释器用Apache的Crimson,可以到Apache主页去上载。
     
     import java.io.*; //Java基础包,包含各种流操作
     
     import java.util.*; //Java基础包,包含标准数据结构操作
     
     import javax.xml.parsers.*; //XML解析器接口
     
     import org.w3c.dom.*; //XML的DOM实现
     
     import org.apache.crimson.tree.XmlDocument;//写XML文件要用到
     
     
     为了保存多个学生信息,还必须借用一个集合类(并不是单纯意义上的集合,Java中的集合是个框架的概念,包含向量、列表等),这里采用Vector向量类。定义在XMLTest测试类中,命名为student_Vector。
     
     准备工作做完了,下面就开始实质性的读写操作了,定义两个方法readXMLFile和writeXMLFile,实现读写操作。代码如下:
     
     private void readXMLFile(String inFile) throws Exception {
     
     //为解析XML作准备,创建DocumentBuilderFactory实例,指定DocumentBuilder
     
     DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
     
     DocumentBuilder db = null;
     
     try {
     
     db = dbf.newDocumentBuilder();
     
     } catch (ParserConfigurationException pce) {
     
     System.err.println(pce);
     
     System.exit(1);
     
     }
     
     
     Document doc = null;
     
     try {
     
     doc = db.parse(inFile);
     
     } catch (DOMException dom) {
     
     System.err.println(dom.getMessage());
     
     System.exit(1);
     
     } catch (IOException ioe) {
     
     System.err.println(ioe);
     
     System.exit(1);
     
     }
     
     //下面是解析XML的全过程,比较简单,先取根元素”学生花名册“
     
     Element root = doc.getDocumentElement();
     
     //取“学生“元素列表
     
     NodeList students = root.getElementsByTagName("学生");
     
     for (int i = 0; i < students.getLength(); i++) {
     
     //依次取每个“学生”元素
     
     Element student = (Element) students.item(i);
     
     //创建一个学生的Bean实例
     
     StudentBean studentBean = new StudentBean();
     
     //取学生的性别属性
     
     studentBean.setSex(student.getAttribute("性别"));
     
     //取“姓名”元素,下同
     
     NodeList names = student.getElementsByTagName("姓名");
     
     if (names.getLength() == 1) {
     
     Element e = (Element) names.item(0);
     
     Text t = (Text) e.getFirstChild();
     
     
     studentBean.setName(t.getNodeValue());
     
     }
     
     
     NodeList ages = student.getElementsByTagName("年龄");
     
     if (ages.getLength() == 1) {
     
     Element e = (Element) ages.item(0);
     
     Text t = (Text) e.getFirstChild();
     
     
     studentBean.setAge(Integer.parseInt(t.getNodeValue()));
     
     }
     
     
     NodeList phones = student.getElementsByTagName("电话");
     
     if (phones.getLength() == 1) {
     
     Element e = (Element) phones.item(0);
     
     Text t = (Text) e.getFirstChild();
     
     
     studentBean.setPhone(t.getNodeValue());
     
     }
     
     
     student_Vector.add(studentBean);
     
     }
     
     }
     
     
     private void writeXMLFile(String outFile) throws Exception {
     
     //为解析XML作准备,创建DocumentBuilderFactory实例,指定DocumentBuilder
     
     DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
     
     DocumentBuilder db = null;
     
     try {
     
     db = dbf.newDocumentBuilder();
     
     } catch (ParserConfigurationException pce) {
     
     System.err.println(pce);
     
     System.exit(1);
     
     }
     
     
     Document doc = null;
     
     doc = db.newDocument();
     
     
     //下面是建立XML文档内容的过程,先建立根元素“学生花名册”
     
     Element root = doc.createElement("学生花名册");
     
     //根元素添加上文档
     
     doc.appendChild(root);
     
     
     //取学生信息的Bean列表
     
     for (int i = 0; i < student_Vector.size(); i++) {
     
     //依次取每个学生的信息
     
     StudentBean studentBean = (StudentBean) student_Vector.get(i);
     
     //建立“学生”元素,添加到根元素
     
     Element student = doc.createElement("学生");
     
     student.setAttribute("性别", studentBean.getSex());
     
     root.appendChild(student);
     
     //建立“姓名”元素,添加到学生下面,下同
     
     Element name = doc.createElement("姓名");
     
     student.appendChild(name);
     
     Text tName = doc.createTextNode(studentBean.getName());
     
     name.appendChild(tName);
     
     
     Element age = doc.createElement("年龄");
     
     student.appendChild(age);
     
     Text tAge =
     
     doc.createTextNode(String.valueOf(studentBean.getAge()));
     
     age.appendChild(tAge);
     
     
     Element phone = doc.createElement("电话");
     
     student.appendChild(phone);
     
     Text tPhone = doc.createTextNode(studentBean.getPhone());
     
     phone.appendChild(tPhone);
     
     }
     
     //把XML文档输出到指定的文件
     
     FileOutputStream outStream = new FileOutputStream(outFile);
     
     OutputStreamWriter outWriter = new OutputStreamWriter(outStream);
     
     ((XmlDocument) doc).write(outWriter, "GB2312");
     
     outWriter.close();
     
     outStream.close();
     
     }
     
     
     最后加入测试主函数,如下:
     
     public static void main(String[] args) throws Exception {
     
     //建立测试实例
     
     XMLTest xmlTest = new XMLTest();




Copyright(C)2007-2024 广州市佳沛数码科技有限公司 版权所有
公司地址: 广州市荔湾区东漖北路560号511室
电话:020-81803473 传真:020-81544987