Java解析XML与生成XML文件

简介: 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文件的生成和解析,采用这种方法确实显得有些吃力,代码展示的而仅仅是轻量级的操作时使用即可。

目录
相关文章
|
13天前
|
Java
Java中ReentrantLock释放锁代码解析
Java中ReentrantLock释放锁代码解析
25 8
|
13天前
|
XML Java 数据库连接
mybatis中在xml文件中通用查询结果列如何使用
mybatis中在xml文件中通用查询结果列如何使用
11 0
|
14天前
|
XML JavaScript 前端开发
xml文件使用及解析
xml文件使用及解析
|
1天前
|
XML Java 数据库连接
Javaweb之Mybatis的XML配置文件的详细解析
Javaweb之Mybatis的XML配置文件的详细解析
9 0
|
1天前
|
XML 数据格式
小米备份descript.xml文件
小米备份descript.xml文件
7 0
|
2天前
|
Java 关系型数据库 MySQL
Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
【4月更文挑战第12天】Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
23 3
|
4天前
|
XML C# 数据格式
C# 解析XML文件
C# 解析XML文件
13 1
|
6天前
|
Java API 数据库
深入解析:使用JPA进行Java对象关系映射的实践与应用
【4月更文挑战第17天】Java Persistence API (JPA) 是Java EE中的ORM规范,简化数据库操作,让开发者以面向对象方式处理数据,提高效率和代码可读性。它定义了Java对象与数据库表的映射,通过@Entity等注解标记实体类,如User类映射到users表。JPA提供持久化上下文和EntityManager,管理对象生命周期,支持Criteria API和JPQL进行数据库查询。同时,JPA包含事务管理功能,保证数据一致性。使用JPA能降低开发复杂性,但需根据项目需求灵活应用,结合框架如Spring Data JPA,进一步提升开发便捷性。
|
11天前
|
Java
Java 15 神秘登场:隐藏类解析未知领域
Java 15 神秘登场:隐藏类解析未知领域
15 0
|
11天前
|
安全 Java 编译器
接口之美,内部之妙:深入解析Java的接口与内部类
接口之美,内部之妙:深入解析Java的接口与内部类
33 0
接口之美,内部之妙:深入解析Java的接口与内部类

推荐镜像

更多