快捷搜索:  as  2018  FtCWSyGV  С˵  test  xxx  Ψһ  w3viyKQx

澳门24小时在线娱乐的网站_龟发之家论坛



XML作为举世通用的布局化说话,越来越受人们青睐,各类开拓平台(比如Microsoft Studio系列、Oracle系列、Inprise Borland系列等)也都把支持XML开拓生发火为鼓吹口号之一 。因为笔者所从事的电子政务开拓较早的引入了XML,以是尝到了许多甜头,在许多项目中使用XML数据互换信息,省去了许多麻烦事,不用拟订繁锁的数据款式,使用XML数据易于表达,也利于一线开拓者跟踪调试。

笔者先前也曾颁发过相关的文章,比如《简析Delphi中的XML编程》一文,有兴趣的读者可以到Google网(http://www.google.com)去搜索一下,有很多媒体转载。本日笔者想探究的是关于JAVA中的XML编程,盼望对正在或想要进修XML编程的新老读者有所赞助。

在XML利用中,最常用也最实用的莫过于XML文件的读写,以是笔者经由过程一个简单的XML文件读写来作简要阐发。可以在任何文本编辑器中先建立如下布局的XML文件,类似于HTM澳门24小时在线娱乐的网站L布局,但XML语义对照严格,肇端标记必须配对,比如"〈门生诨名册〉"与"〈/门生诨名册〉"对应,空格若干可不必在意,但一样平常都以缩格形式书写,便于涉猎。把此文件命名为Input.xml,可以在任何支持XML的浏览器中打开测试一下,假如输入精确,在浏览中可以看到此文件的树形表示布局。假如您还对XML布局认为对照陌生,建议先看看《简析Delphi中的XML编程》一文中关于XML文件的阐明。

Input.xml

代码:

李华

14

6287555

张三

16

8273425

筹备事情做完后,接着就开始写实质性的JAVA代码了。为保存从XML文件读入的信息,必要先建一个简单的Bean来保存门生信息,命名为StudentBean,代码如下所示:

StudentBean.java

代码:

public class StudentBean {

private String sex; //门生性别

private String name; //门生姓名

private int age; //门生年岁

private String phone; //电话号码

public void setSex澳门24小时在线娱乐的网站(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() {

retur澳门24小时在线娱乐的网站n phone;

}

}

之后写XML的测试类,

TESTXml.java

代码:

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文件要用到

public class XMLTest {

Vector student_Vector;

XMLTest() {

}

//为了保存多个门生信息,还得借助一个聚拢类(并不是纯真意义上的聚拢,JAVA中澳门24小时在线娱乐的网站的聚拢是聚拢框架的观点,包孕向量、列表、哈希表等),这里采纳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.cl澳门24小时在线娱乐的网站ose();

}

//着末加入测试主函数,如下:

public static void main(String[] args) throws Exception {

//建立测试实例

XMLTest xmlTest = new XMLTest();

//初始化向量列表

xmlTest.student_Vector = new Vector();

System.out.println("开始读Input.xml文件");

xmlTest.readXMLFile("Input.xml");

System.out.println("读入完毕,开始写Output.xml文件");

xmlTest.writeXMLFile("Output.xml");

System.out.println("写入完成");

System.in.read();

}

}

了,保存好StudentBean和XMLTest,把Input.xml保存到事情目录下。假如您输入很仔细,没敲错字母的话,可以看到"写入完成"了,去瞧瞧Output.xml文件和Input.xml文件是不是一样吧。

您可能还会对下面的文章感兴趣: