前段时间,本站刊登了笔者的《简析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.getElement[1] [2] 下一页
|
|