Java操作XML编程实例解析
### Java操作XML编程实例解析 #### 一、引言 随着互联网技术的发展,XML作为一种全球通用的结构化语言,因其良好的跨平台性、强大的数据组织能力以及清晰的语法规则而受到广泛的关注与应用。在软件开发过程中,尤其是在数据交换方面,XML的应用显得尤为重要。本文将详细介绍如何使用Java进行XML文件的读写操作,并通过一个具体的示例来展示这一过程。 #### 二、XML简介 XML(Extensible Markup Language,可扩展标记语言)是一种用于标记数据的语言,其设计目的是传输和存储数据,而非显示数据。它具有良好的可读性和结构清晰的特点,非常适合在网络上传输数据。XML文档的结构由元素构成,每个元素都有一个名称,可以包含属性、子元素和文本内容。 #### 三、Java操作XML的基本步骤 在使用Java操作XML之前,我们需要了解一些基本的操作步骤: 1. **解析XML文件**:使用DOM或SAX等方式读取XML文件并解析成可以操作的对象。 2. **处理XML数据**:根据需要对解析出的数据进行查询、修改等操作。 3. **生成新的XML文件**:将处理后的数据写入新的XML文件。 #### 四、Java操作XML实例 下面是一个使用Java读取和写入XML文件的具体实例。 ##### 1. XML文件结构 我们来看一下XML文件的基本结构: ```xml <?xml version="1.0" encoding="GB2312"?> <学生花名册> <学生 性别="男"> <姓名>李华</姓名> <年龄>14</年龄> <电话>6287555</电话> </学生> <学生 性别="男"> <姓名>张三</姓名> <年龄>16</年龄> <电话>8273425</电话> </学生> </学生花名册> ``` 这个XML文件包含了两个学生的记录,每个记录包括学生的姓名、年龄和电话号码等信息。 ##### 2. 创建StudentBean类 为了能够更好地处理XML文件中的学生信息,我们首先需要创建一个`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; } } ``` ##### 3. 实现XML的读写 接下来,我们将编写一个名为`XMLTest`的类,该类将包含读取和写入XML文件的方法。 ```java import java.io.*; import java.util.*; import javax.xml.parsers.*; import org.w3c.dom.*; import org.apache.crimson.tree.XmlDocument; public class XMLTest { // 保存多个学生信息的集合 private Vector<StudentBean> student_Vector = new Vector<>(); private void readXMLFile(String inFile) throws Exception { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); Document doc = db.parse(new File(inFile)); NodeList studentNodes = doc.getElementsByTagName("学生"); for (int i = 0; i < studentNodes.getLength(); i++) { Node studentNode = studentNodes.item(i); if (studentNode.getNodeType() == Node.ELEMENT_NODE) { Element studentElement = (Element) studentNode; String sex = studentElement.getAttribute("性别"); String name = studentElement.getElementsByTagName("姓名").item(0).getTextContent(); String age = studentElement.getElementsByTagName("年龄").item(0).getTextContent(); String phone = studentElement.getElementsByTagName("电话").item(0).getTextContent(); StudentBean student = new StudentBean(); student.setSex(sex); student.setName(name); student.setAge(Integer.parseInt(age)); student.setPhone(phone); student_Vector.add(student); } } } private void writeXMLFile(String outFile) throws Exception { XmlDocument doc = new XmlDocument(); Element root = doc.createElement("学生花名册"); doc.appendChild(root); for (StudentBean student : student_Vector) { Element studentElement = doc.createElement("学生"); studentElement.setAttribute("性别", student.getSex()); root.appendChild(studentElement); Element nameElement = doc.createElement("姓名"); nameElement.appendChild(doc.createTextNode(student.getName())); studentElement.appendChild(nameElement); Element ageElement = doc.createElement("年龄"); ageElement.appendChild(doc.createTextNode(String.valueOf(student.getAge()))); studentElement.appendChild(ageElement); Element phoneElement = doc.createElement("电话"); phoneElement.appendChild(doc.createTextNode(student.getPhone())); studentElement.appendChild(phoneElement); } // 写入文件 Source source = new DOMSource(doc); Result result = new StreamResult(new File(outFile)); TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); transformer.transform(source, result); } public static void main(String[] args) { try { XMLTest test = new XMLTest(); test.readXMLFile("Input.xml"); test.writeXMLFile("Output.xml"); } catch (Exception e) { e.printStackTrace(); } } } ``` 以上代码实现了读取XML文件并将其中的学生信息保存到`Vector<StudentBean>`中,然后再将这些信息写入新的XML文件的功能。通过这种方式,我们可以方便地在Java程序中操作XML数据。
- 粉丝: 22
- 资源: 73
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助