




免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java操作XML编程实例解析2008-05-29 11:19:44 来源:互联网 作者:编辑整理 【大 中 小】 评论:1 条XML作为全球通用的结构化语言,越来越受人们青睐,各种开发平台(比如Microsoft Studio系列、Oracle系列、Inprise Borland系列等)也都把支持XML开发作为宣传口号之一。在许多项目中利用XML数据交换信息,省去了许多麻烦事,不用制定繁锁的数据格式,利用XML数据易于表达,也利于一线开发者跟踪调试。在XML应用中,最常用也最实用的莫过于XML文件的读写,所以笔者通过一个简单的XML文件读写来作简要分析。可以在任何文本编辑器中先建立如下结构的XML文件,类似于HTML结构,但XML语义比较严格,起始标记必须配对,比如学生花名册与学生花名册对应,空格多少可不必在意,但一般都以缩格形式书写,便于阅读。把此文件命名为Input.xml,可以在任何支持XML的浏览器中打开测试一下,如果输入正确,在浏览中可以看到此文件的树形表示结构。如果您还对XML结构感到比较陌生,建议先看看简析Delphi中的XML编程一文中关于XML文件的说明。李华146287555张三168273425准备工作做完后,接着就开始写实质性的JAVA代码了。为保存从XML文件读入的信息,需要先建一个简单的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,在JDK 1.4.0中测试也通过,XML解释器用Apache的Crimson,可以到Apache主页去上载。import java.io.*;/Java基础包,包含各种IO操作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实例,指定DocumentBuilderDocumentBuilderFactory 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实例,指定DocumentBuilderDocumentBuilderFactory 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();/初始化向量列表xmlTest.student_Vecto
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026届安徽省六安市天堂寨镇暖流中学中考二模英语试题含答案
- 省第十三党代会课件
- 无动力翼伞的动力学建模与航迹规划研究
- 2025年福建信息职业技术学院单招职业适应性考试题库及参考答案一套
- 术后恢复患者的营养干预查房
- 新技术在临床护理中的推广查房
- 静脉穿刺成功率提升的护理技巧
- 党试题及答案
- 工程调度课件
- 工程课件分享
- (2025)汽车驾驶员高级技师基本理论知识考试题附含答案
- GB/T 2820.5-2025往复式内燃机驱动的交流发电机组第5部分:发电机组
- (苏教版)小学数学五年级下册暑假作业设计
- 办公用品、易耗品供货服务方案
- 体育中国学习通超星期末考试答案章节答案2024年
- 2022年7月安徽省萧县教育系统幼儿招聘考试《幼儿保教知识与能力》真题试卷及答案【解析】
- 普通高中物理课程标准解读课件
- 真空技术精品课件
- 同型半胱氨酸
- 海洋时代2探索发现物
- 数据结构课件:第3章 栈和队列1栈
评论
0/150
提交评论