Java解析XML与生成XML文件

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介: XML是eXtensible Markup Language(可扩展标记语言)的简写形式,它是一种元标记语言(meta-markup language),也就是说它没有一套能够适用于各个领域中所有用户的固守的标签和元素,相反,它允许开发者根据自已的需要定义自已的元素,XML中的X(eXtensible)就是说明了这一点。

XML是eXtensible Markup Language(可扩展标记语言)的简写形式,它是一种元标记语言(meta-markup language),也就是说它没有一套能够适用于各个领域中所有用户的固守的标签和元素,相反,它允许开发者根据自已的需要定义自已的元素,XML中的X(eXtensible)就是说明了这一点。

它的特点有:
1、XML使用Unicode字符集,可生成英文、中文、希腊文或梵文等多种语言。
2、可将多个来源(包括其他XML文档和二进制文件)汇合进一个XML文档。
3、可利用DTD或Schema(模式)管理一致性问题。DTD主要用于文档型文档,Schema主要用数据型文档。
4、具有很好的扩展性,可定义自已的元素和属性。
5、通过XML可从关系数据库管理系统中提取数据到结构化文档。它还被设计成可对各种数据对象进行操作。
6、在一个设计良好的XML应用中,XML标记不涉及文档如何显示,只表示文档的结构。
XML被设计用来存储、支持和交换数据,而不是用来显示数据的。通常,XML被用于数据交换,而不是数据存储。下图就很好的表示了xml作为电子数据交换的统一格式:

XML文档是什么?它有时是一个文件,有时是关系数据库中的一条记录,有时是由Object Request Broker(对象请求代理程序)传送的一个对象,有时是到达网络接口的一个字节流。XML文档可使不同系统、不同平台的数据实现统一接口,这就是XML真正的威力所在。下面列举几个使用XML的领域:
1、文档设计和管理,可利用XML维护公司的文档资料。
2、Web开发,利用XHTML和XSLT实现的Web页面扩展性更好,更容易维护。
3、数据库应用和程序开发,可从数据库中提取数据并生成XML文档,实现信息的跨平台、跨系统沟通。
4、定义其它语言,WML和WAP就是用通过XML建立的。

XML不是什么?
1、XML只是一种标记语言,不是一种编程语言。不存在一种编译器,把XML文档转化成可执行二进制代码。
2、XML不是一种网络传输协议,但通过网络协议传输的数据格式则可以是XML格式的。
3、XML不是数据库,不能替代Oracle或MySQL这类的关系数据库管理系统。
下面我们就来使用java代码来实现对XML文件的操作吧。
1、解析已经存在的XML文件:
下面的xml文件名称为target.xml,保存在我们的项目目录下,

<hibernate-mapping>
    <class name="com.tiger.target" table ="Table_tiger">
        <property name="name"></property>
        <property name="password" ></property>
    </class>

</hibernate-mapping>

解析代码:

package com.tiger.SAX;

import java.io.File;
import java.util.Iterator;
import java.util.List;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;

public class SAXTexst {

    public static void main(String[] args) throws DocumentException {
        // TODO Auto-generated method stub
        SAXReader reader=new SAXReader();
        Document document=reader.read(new File("target.xml"));
        //get the root Element
        Element rootElement=document.getRootElement();
        print(rootElement.getName());

        /*@Method 1
        //get child elements with Iterator function
        for(Iterator i=rootElement.elementIterator();i.hasNext();){
            Element element=(Element)i.next();
            print(element.getName());
            //if you want to get the clild's attributes
            for(Iterator j=element.attributeIterator();j.hasNext();){
                Attribute attribute=(Attribute) j.next();
                print(attribute.getName()+"-->>"+attribute.getValue());
            }
        */
            /**
             * So if you want to get All the element,just recurrence it;
             */

        /*@Method 2
            //Xpath Method to this
            //this is a way to get element directly
            List<Node> list=document.selectNodes("//hibernate-mapping/class/property");
            for(Node n:list){
                //this is a n important method!
                print(n.getName()+"----->>>"+n.valueOf("@name"));
            }

        */
    }

    public static  void print(Object o){
        System.out.println(o);
    }

}

里面有我自己做的一些注释,和简单的使用方法。
2、如何生成一个xml文件,也是有两种方式:


import java.io.FileWriter;
import java.io.IOException;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

public class CreateTest {

    SAXReader reader=null;
    Document document=null;

    public CreateTest() throws DocumentException {
        // TODO Auto-generated constructor stub
        reader=new SAXReader();
    }
    public static void main(String[] args) throws Exception {
        // TODO Auto-generated method stub
        Document document=DocumentHelper.createDocument();
        Element root=document.addElement("tiger");
        Element childElement=root.addElement("class")
                .addAttribute("name","Tiger Guo")
                .addAttribute("password","*******")
                .addText("My name is Tiger Guo");
        //
        childElement.addElement("property").addAttribute("name", "username");

        /* Write method one 
        FileWriter out=new FileWriter("Tiger.xml");
        document.write(out);
        out.flush();
        out.close();
        */

        //write method Two:new a format to make your xml document looks better
        OutputFormat format=OutputFormat.createPrettyPrint(); 
        XMLWriter writer=new XMLWriter(new FileWriter("Tiger1.xml"),format);
        writer.write(document);
        writer.close();

    }

}

下面是生成的xml文件:
Tiger.xml:

<?xml version="1.0" encoding="UTF-8"?>
<tiger>
    <class name="Tiger Guo" password="*******">
        My name is Tiger Guo
        <property name="username" />
    </class>
</tiger>

Tiger1.xml:

<?xml version="1.0" encoding="UTF-8"?>

<tiger>
  <class name="Tiger Guo" password="*******">My name is Tiger Guo
    <property name="username"/>
  </class>
</tiger>

好了,xml文件的解析其实并不是很难,但是对于复杂的xml文件的生成和解析,采用这种方法确实显得有些吃力,代码展示的而仅仅是轻量级的操作时使用即可。

目录
相关文章
|
6天前
|
存储 Java 计算机视觉
Java二维数组的使用技巧与实例解析
本文详细介绍了Java中二维数组的使用方法
28 15
|
26天前
|
人工智能 自然语言处理 Java
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
FastExcel 是一款基于 Java 的高性能 Excel 处理工具,专注于优化大规模数据处理,提供简洁易用的 API 和流式操作能力,支持从 EasyExcel 无缝迁移。
122 9
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
|
23天前
|
Serverless 对象存储 人工智能
智能文件解析:体验阿里云多模态信息提取解决方案
在当今数据驱动的时代,信息的获取和处理效率直接影响着企业决策的速度和质量。然而,面对日益多样化的文件格式(文本、图像、音频、视频),传统的处理方法显然已经无法满足需求。
75 4
智能文件解析:体验阿里云多模态信息提取解决方案
|
6天前
|
算法 搜索推荐 Java
【潜意识Java】深度解析黑马项目《苍穹外卖》与蓝桥杯算法的结合问题
本文探讨了如何将算法学习与实际项目相结合,以提升编程竞赛中的解题能力。通过《苍穹外卖》项目,介绍了订单配送路径规划(基于动态规划解决旅行商问题)和商品推荐系统(基于贪心算法)。这些实例不仅展示了算法在实际业务中的应用,还帮助读者更好地准备蓝桥杯等编程竞赛。结合具体代码实现和解析,文章详细说明了如何运用算法优化项目功能,提高解决问题的能力。
42 6
|
6天前
|
存储 算法 搜索推荐
【潜意识Java】期末考试可能考的高质量大题及答案解析
Java 期末考试大题整理:设计一个学生信息管理系统,涵盖面向对象编程、集合类、文件操作、异常处理和多线程等知识点。系统功能包括添加、查询、删除、显示所有学生信息、按成绩排序及文件存储。通过本题,考生可以巩固 Java 基础知识并掌握综合应用技能。代码解析详细,适合复习备考。
14 4
|
12天前
|
SQL Java 数据库连接
如何在 Java 代码中使用 JSqlParser 解析复杂的 SQL 语句?
大家好,我是 V 哥。JSqlParser 是一个用于解析 SQL 语句的 Java 库,可将 SQL 解析为 Java 对象树,支持多种 SQL 类型(如 `SELECT`、`INSERT` 等)。它适用于 SQL 分析、修改、生成和验证等场景。通过 Maven 或 Gradle 安装后,可以方便地在 Java 代码中使用。
131 11
|
6天前
|
存储 Java
【潜意识Java】期末考试可能考的选择题(附带答案解析)
本文整理了 Java 期末考试中常见的选择题,涵盖数据类型、控制结构、面向对象编程、集合框架、异常处理、方法、流程控制和字符串等知识点。每道题目附有详细解析,帮助考生巩固基础,加深理解。通过这些练习,考生可以更好地准备考试,掌握 Java 的核心概念和语法。
15 1
|
11天前
|
存储 分布式计算 Hadoop
基于Java的Hadoop文件处理系统:高效分布式数据解析与存储
本文介绍了如何借鉴Hadoop的设计思想,使用Java实现其核心功能MapReduce,解决海量数据处理问题。通过类比图书馆管理系统,详细解释了Hadoop的两大组件:HDFS(分布式文件系统)和MapReduce(分布式计算模型)。具体实现了单词统计任务,并扩展支持CSV和JSON格式的数据解析。为了提升性能,引入了Combiner减少中间数据传输,以及自定义Partitioner解决数据倾斜问题。最后总结了Hadoop在大数据处理中的重要性,鼓励Java开发者学习Hadoop以拓展技术边界。
34 7
|
6天前
|
Java 编译器 程序员
【潜意识Java】期末考试可能考的简答题及答案解析
为了帮助同学们更好地准备 Java 期末考试,本文列举了一些常见的简答题,并附上详细的答案解析。内容包括类与对象的区别、多态的实现、异常处理、接口与抽象类的区别以及垃圾回收机制。通过这些题目,同学们可以深入理解 Java 的核心概念,从而在考试中更加得心应手。每道题都配有代码示例和详细解释,帮助大家巩固知识点。希望这些内容能助力大家顺利通过考试!
11 0
|
20天前
|
监控 Java
java异步判断线程池所有任务是否执行完
通过上述步骤,您可以在Java中实现异步判断线程池所有任务是否执行完毕。这种方法使用了 `CompletionService`来监控任务的完成情况,并通过一个独立线程异步检查所有任务的执行状态。这种设计不仅简洁高效,还能确保在大量任务处理时程序的稳定性和可维护性。希望本文能为您的开发工作提供实用的指导和帮助。
82 17

推荐镜像

更多