历史

新手入门JavaXML编程实例解析

XML作为全球通用的结构化语言,越来越受人们青睐,各种开发平台(比如Microsoft Studio系列、Oracle系列、Inprise Borland系列等)也都把支持XML开发作为宣传口号之一。在许多项目中利用XML数据交换信息但以秋冬季为高发期。导致感冒发病高峰的天气主要有两类,省去了许多麻烦事,不用制定繁锁的数据格式,利用XML数据易于表达,也利于一线开发者跟踪调试。 在XML应用中,最常用也最实用的莫过于XML文件的读写,所以笔者通过一个简单的XML文件读写来作简要分析。可以在任何文本器中先建立如下结构的XML文件,类似于HTML结构,但XML语义比较严格,起始标记必须配对,比如"〈学生花名册〉"与"〈/学生花名册〉"对应,空格多少可不必在意,但一般都以缩格形式书写,便于阅读。把此文件命名为l,可以在任何支持XML的浏览器中打开测试一下,如果输入正确,在浏览中可以看到此文件的树形表示结构。如果您还对XML结构感到比较陌生,建议先看看《简析Delphi中的XML编程》一文中关于XML文件的说明。 ?xml version="1.0" encoding="GB2312"?  学生花名册  学生 性别 = "男"  姓名李华/姓名  年龄14/年龄  /  /学生  学生 性别 = "男"  姓名张三/姓名  年龄16/年龄  /  /学生  /学生花名册

准备工作做完后,接着就开始写实质性的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操作  import il.*;  //Java基础包,包含各种标准数据结构操作  import rsers.*;  //XML解析器接口  import m.*;  //XML的DOM实现  import lDocument;  //写XML文件要用到

为了保存多个学生信息,还得借助一个集合类(并不是单纯意义上的集合,JAVA中的集合是集合框架的概念,包含向量、列表、哈希表等),这里采用Vector向量类。定义在XMLTest测试类中,命名为student_Vector。然后定义两个方法readXMLFile和writeXMLFile,实现读写操作。代码如下:  private void readXMLFile(String inFile) throws Exception {  //为解析XML作准备  //创建DocumentBuilderFactory实例,指定DocumentBuilder  DocumentBuilderFactory dbf = wInstance();  DocumentBuilder db = null;  try {  db = wDocumentBuilder();  } catch (ParserConfigurationException pce) {  intln(pce);  //出异常时输出异常信息,然后退出,下同  it(1);  }  Document doc = null;  try {  doc = rse(inFile);  } catch (DOMException dom) {  intln(tMessage());  it(1);  } catch (IOException ioe) {  intln(ioe);  it(1);  }  //下面是解析XML的全过程, //比较简单,先取根元素"学生花名册"  Element root = tDocumentElement();  //取"学生"元素列表  NodeList students = tElementsByTagName("学生");  for (int i = 0; i tLength(); i++) {  //依次取每个"学生"元素  Element student = (Element) em(i);  //创建一个学生的Bean实例  StudentBean studentBean = new StudentBean();  //取学生的性别属性  tSex(tAttribute("性别"));  //取"姓名"元素,下面类同  NodeList names = tElementsByTagName("姓名");  if (tLength() == 1) {  Element e = (Element) em(0);  Text t = (Text) tFirstChild();  tName(tNodeValue());  }    NodeList ages = tElementsByTagName("年龄");  if (tLength() == 1) {  Element e = (Element) em(0);  Text t = (Text) tFirstChild();  tAge(rseInt(tNodeValue()));  }    NodeList phones = tElementsByTagName("");  if (tLength() == 1) {  Element e = (Element) em(0);  Text t = (Text) tFirstChild();  tPhone(tNodeValue());  }    student_d(studentBean);  }  }    private void writeXMLFile(String outFile) throws Exception {  //为解析XML作准备,  //创建DocumentBuilderFactory实例,指定DocumentBuilder  DocumentBuilderFactory dbf = wInstance();  DocumentBuilder db = null;  try {  db = wDocumentBuilder();  } catch (ParserConfigurationException pce) {  intln(pce);  it(1);  }    Document doc = null;  doc = wDocument();    //下面是建立XML文档内容的过程带资承建工程。1998年创立揭阳市创鸿建筑工程有限公司,  /先建立根元素"学生花名册"  Element root = eateElement("学生花名册");  //根元素添加上文档  pendChild(root);    //取学生信息的Bean列表  for (int i = 0; i student_ze(); i++) {  //依次取每个学生的信息  StudentBean studentBean = (StudentBean) student_t(i);  //建立"学生"元素,添加到根元素  Element student = eateElement("学生");  tAttribute("性别", tSex());  pendChild(student);  //建立"姓名"元素,添加到学生下面,下同  Element name = eateElement("姓名");  pendChild(name);  Text tName = eateTextNode(tName());  pendChild(tName);    Element age = eateElement("年龄");  pendChild(age);  Text tAge = eateTextNode(lueOf(tAge()));  pendChild(tAge);    Element phone = eateElement("");  pendChild(phone);  Text tPhone = eateTextNode(tPhone());  pendChild(tPhone);  }  //把XML文档输出到指定的文件  FileOutputStream outStream = new FileOutputStream(outFile);  OutputStreamWriter outWriter = new OutputStreamWriter(outStream);  ((XmlDocument) doc).write(outWriter, "GB2312");  ose();  ose();  }

最后加入测试主函数,如下:  public static void main(String[] args) throws Exception {  //建立测试实例  XMLTest xmlTest = new XMLTest();  //初始化向量列表  udent_Vector = new Vector();    intln("开始读l文件");  adXMLFile("l");    intln("读入完毕,开始写l文件");  iteXMLFile("l");  intln("写入完成");  }

好了,保存好StudentBean和XMLTest,把l保存到工作目录下。可以看到"写入完成"了。

查看本文来源

天水治疗白癜风哪家医院好
灰指甲属于什么病
泸州好的白癜风医院
友情链接