Java解析XML与生成XML文件

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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

解析代码:

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);
    }

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56

里面有我自己做的一些注释,和简单的使用方法。

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();

    }

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49

下面是生成的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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

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

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

原文地址:https://www.cnblogs.com/djuwcnhwbx/p/10326030.html

时间: 2024-10-10 15:38:55

Java解析XML与生成XML文件的相关文章

使用word的xml模板生成.doc文件

一.编辑模板 替换地方以变量标记如"案件编号"可写成{caseNo} template.xml 二.准备数据 以HashMap封装数据,原理是替换模板中的变量 三.替换操作 选择输出位置:writePath WordUtil.printWordbyXMLWithOutputPath(templateFile, writePath, filename, dataMap); /** * 打印word文档(传入参数需要传入输出文件的保存路径的) * @param templateFile *

Java之Pull方式生成xml文件和解析xml文件

Pull XML解析器早已经被google集成到android sdk当中,它是google官方推荐的解析器. 如果我们要在Java桌面.J2ME等当中使用Pull方式生成xml文件和解析xml文件,需要用到kxml2: KXML解析器是基于普通XML PULL解析器的一个小巧的解析器,官网是http://kxml.org/ 普通XML PULL解析器的官网是http://xmlpull.org/ 实验开始: 在Eclipse中新建一个java项目,其中新建一个libs文件夹,拷贝从网上下载的k

Android学习之XML数据的三种解析方式以及生成XML文件

首先,我得声明,本博客的思想主要参考了此博客:http://blog.csdn.net/liuhe688/article/details/6415593 不过代码我自己一句句敲的 好了,首先讲一下解析XML的三种方式:(恕我粘贴一下哈) SAX解析器: SAX(Simple API for XML)解析器是一种基于事件的解析器,它的核心是事件处理模式,主要是围绕着事件源以及事件处理器来工作的.当事件源产生事件后,调用事件处理器相应的处理方法,一个事件就可以得到处理.在事件源调用事件处理器中特定方

通过generate解析SQL日志生成xml进行SQL回放

查看Oracle redo日志来分析SQL执行记录 1)设置Oracle数据字典导出路径参数(可选) shutdown immediatealter system set UTL_FILE_DIR='/opt/oracle/utl' scope=spfile; execute dbms_logmnr_d.build(dictionary_filename => 'logminer_dict.ora', dictionary_location => '/opt/oracle/utl');star

java 解析excle和生成excle文档

只贴出关键代码,其他一概论之 java解析excle文件: Workbook book = Workbook.getWorkbook(new File(fileName)) ; //filename为需要解析的excle  Sheet sheet = book.getSheet(0);  int rows = sheet.getRows(); int celllength = sheet.getRow(0).length;//只获取标题这么多列的数据,其他的就不管了 List<List> al

Java KeyStore 用命令生成keystore文件

1.生成keyStore文件 在命令行下执行以下命令: Shell代码 收藏代码 keytool -genkey -validity 36000 -alias www.zlex.org -keyalg RSA -keystore d:\zlex.keystore 其中 -genkey表示生成密钥 -validity指定证书有效期,这里是36000天 -alias指定别名,这里是www.zlex.org -keyalg指定算法,这里是RSA -keystore指定存储位置,这里是d:\zlex.k

java使用f1j9swing来生成excel文件

工程需要引入 f1j9swing.jar包 package sinosoft_xsy; import java.io.IOException; import com.f1j.ss.BookModelImpl; import com.f1j.ss.CellFormat; import com.f1j.ss.Constants; import com.f1j.ss.WriteParams; import com.f1j.util.F1Exception; public class Sinosoft

如何使用GDataXML-HTML生成XML

iOS版本系统自带的XML类只能进行解析,无法生成XML.开源库GDataXML-HTML不仅支持XML解析,还支持生成XML. 1. 添加GDataXML-HTML到项目中. 笔者使用的项目都使用Cocoapods托管,不熟悉Cocoapods可以参考[Cocoapods的安装和使用] 在Podfile文件中添加 pod 'GDataXML-HTML', '~> 1.1.0' 执行以下命令进行添加库到项目中 pod update 2. 为项目添加libxml头文件位置 在项目配置中,为"

VS2010 根据WSDL文件(java Web Service)生成.cs文件

我们添加webService引用,一般是通过 添加服务引用完成的,其实 添加服务引用 在背后为我们生成了代理类. 我们手动生成代理类方法: 1.通过java Web Service,生成wsdl文件: 1.1.IE地址栏中输入wsdl的url 例如:http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl 1.2.通过IE的 [文件]-->[另存为]-->文件名中输入 UserService55.wsdl, 保存类型: