Input.xml
代码:
<?xml version="1.0" encoding="UTF-8"?>
<学生花名册>
<学生 性别 = "男">
<姓名>李华</姓名>
<年龄>14</年龄>
<电话>6287555</电话>
</学生>
<学生 性别 = "男">
<姓名>张三</姓名>
<年龄>16</年龄>
<电话>8273425</电话>
</学生>
</学生花名册>
StudentBean.java //保存学生信息
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; }
}
TESTXml.java
import java.io.*;
import java.util.*;
import javax.xml.parsers.*; //XML解析器接口
import org.w3c.dom.*; //XML的DOM实现
import org.apache.crimson.tree.XmlDocument; //写XML文件要用到
public class XMLTest {
Vector student_Vector;//为了保存多个学生信息,还得借助一个集合类(并不是单纯意义上的集合,JAVA中的集合是集合框架的概念,包含向量、列表、哈希表等),这里采用Vector向量类。
XMLTest() { }
private void readXMLFile(String inFile) throws Exception {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();//为解析XML作准备,创建DocumentBuilderFactory实例,指定DocumentBuilder
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);//依次取每个"学生"元素
StudentBean studentBean = new StudentBean();//创建一个学生的Bean实例
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 {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();//为解析XML作准备,创建DocumentBuilderFactory实例,指定DocumentBuilder
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, "UTF-8");
outWriter.close();
outStream.close();
}
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();
}
}
相关推荐
在Java Web开发中,XML...总之,JSP中读写XML文件是常见的需求,通过DOM和SAX解析器,以及JavaBean封装,我们可以方便地处理XML数据。同时,了解XML与SOAP在Web服务中的应用,也是提升Java Web开发能力的重要一环。
java.util.jar 提供读写 JAR (Java ARchive) 文件格式的类,该格式基于具有可选清单文件的标准 ZIP 文件格式。 java.util.logging 提供 JavaTM 2 平台核心日志工具的类和接口。 java.util.prefs 此包允许应用程序...
### Java操作XML文件读写与树型...通过上述分析,我们不仅了解了如何使用Java和JDOM库读写XML文件,还探讨了基于XML数据生成树型菜单的基本思路。这对于开发需要处理复杂结构化数据的应用程序来说是非常有用的技能。
如果XML文件包含在jar中,我们可以使用`java.util.jar`包中的`JarInputStream`和`JarOutputStream`来读写。需要注意的是,由于jar文件是只读的,若需修改其中的XML,需要先解压,修改后再重新打包。 总结起来,Java...
在实际的Java代码中,我们需要导入相关的Java包,例如`java.io`用于文件操作,`java.util`用于集合操作,`javax.xml.parsers`提供了XML解析器的接口,而`org.w3c.dom`则是DOM的实现。在本例中,XML解释器使用的是...
《Java实用工具库:java-util-1.3.1.jar深度解析》 在Java编程领域,有一个名为"java-util"的包,它包含了各种实用工具类,为开发者提供了丰富的功能支持。本文将深入探讨这个包的1.3.1版本,主要基于其核心组件...
6. **IO操作**:Java的`java.io`和`java.nio`包提供了读写文件的接口。解析CVS数据时,可能需要读取CVS日志文件,或者将结果写入到文件或数据库中。 7. **异常处理**:在处理CVS数据时,可能出现各种错误,如网络...
`java.io`包则涉及到输入输出操作,包括文件读写、流处理等。 在Java API文档中,每个类或接口都有详细的说明,包括它们的概述、构造方法、公共方法、常量字段等。方法的描述会列出参数、返回值、可能抛出的异常...
10. **文件系统操作**:`java.nio.file`包提供了对文件系统进行操作的类,如读写文件、创建目录、遍历文件系统等。 11. **日期和时间API**:Java 7改进了日期和时间处理,引入了`java.time`包,提供了更强大、更...
`java.io`包提供了输入输出流处理,用于数据的读写。`java.util`包则包含集合框架、日期时间处理、队列、堆栈等通用工具类。 2. **集合框架**:在`java.util`包下,集合框架是Java API的重要组成部分,包括`List`、...
这个名为“hutool-5-master_util工具大全_源码.zip”的压缩包包含了Hutool的最新版本5的源代码,为开发者提供了深入理解Hutool各个工具类和方法的机会。 Hutool的命名源自“实用”和“工具”的拼音首字母,其设计...
4. **I/O流**:Java.io包处理输入/输出操作,包括文件读写、数据流、对象序列化等。InputStream和OutputStream是所有字节流的基类,而Reader和Writer是所有字符流的基类。 5. **多线程**:Java.lang.Thread类和java...
Java SDK API 的核心在于Java Standard Edition (Java SE) 提供的Java API,这是一组预先定义好的类和接口,涵盖了基础编程元素、集合框架、网络通信、多线程、I/O流、数据库连接(JDBC)、XML处理等多个方面。...
Java 8引入了新的日期和时间API (`java.time` 包),相比旧的 `java.util.Date` 和 `java.util.Calendar`,新API更易用且功能更强大。新API包括 `LocalDate`、`LocalTime`、`LocalDateTime`、`ZonedDateTime` 等类,...
- **I/O流**:`java.io`包包含各种流类,如`BufferedReader`和`PrintWriter`,用于数据的读写和转换。 - **XML处理**:`javax.xml`包提供了解析和操作XML文档的工具,如`DocumentBuilderFactory`和`Transformer`。...
在Java项目中,如果你使用的是Maven,可以在pom.xml文件中添加ZXing依赖: ```xml <groupId>com.google.zxing</groupId> <artifactId>core <version>3.4.1 <groupId>com.google.zxing</groupId> ...
在Java中,可以使用诸如 `java.io.BufferedReader` 和 `java.util.CSVReader` 这样的类来处理CSV文件。 3. **XML处理**:`xmlfind.java` 提示我们这个项目可能涉及到XML解析。XML(可扩展标记语言)是用于存储和...
- **java.text** 和 **java.util.locale** 包提供了处理不同语言和文化的工具,如NumberFormat和DateFormat。 9. **安全性**: - Java的安全模型包括类加载器、权限、策略文件和安全管理器,用于控制代码的访问...
8. **线程管理**: 图片上传可能是一个耗时的操作,因此可能需要在后台线程(如`java.lang.Thread`或`java.util.concurrent.ExecutorService`)中执行,以避免阻塞用户界面。 9. **错误处理和异常处理**: 为了保证...