`
peng_jian_ming
  • 浏览: 260176 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

Java解析XML文件

    博客分类:
  • Java
阅读更多
package com.yc.ycportal.ge.util;

import java.io.FileInputStream;
import java.util.Enumeration;
import java.util.List;
import java.util.Properties;
import java.util.ResourceBundle;

import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

/**
* @author
* 本类的作用是对properties和xml文件的解析,重点在于包括xml文件的两种解析方式
* 现在有三种用于Java的流行xml解析技术,文档对象模型(Document Object Model,DOM),基于W3C的
* 成熟标准,2、用于XML的简单API(Simple API for XML),第一个被广泛采用的用Java编写的XML API
* 是一个事实上的标准,3、用于XML的数据流API(Straming API for XML,StAX),JSR-173中采用
* 的一个新解析模型
*/
public class ParseFile {

public static ParseFile getInterface(){
    return new ParseFile();
}

/**解析Properties文件获取数据信息*/
/**
    *properties的文件格式为
    *username=sa
    *userpass=123以第一等号为标准,后面为它的值
    */
public List getPropertes(String fileName){
    List list = null;
    ResourceBundle rb = ResourceBundle.getBundle(fileName);
    list.add(rb.getString("username"));
    list.add(rb.getString("userpass"));
    return list;
}
/**用SAX方式解析XML文件获取数据信息,创建一个解析XML文件的内部类解析器*/
class ParseXML extends DefaultHandler{
    //所有的方法是子类重写父类的方法
    String currentName = null;
    StringBuffer currentValue = new StringBuffer();
    Properties properties = null;
 
    //接收元素开始的通知。
    //默认情况下,不执行任何操作。应用程序编写者可以在子类中重写此方法,以便在每个元素的开始处采取特定的操作
    public void startElement(String uri,String localName,String qName,Attributes attributes)throws SAXException{
     this.currentValue.delete(0, this.currentValue.length());
     this.currentName = qName;
    }
    //接收元素中字符数据的通知
    //默认情况下,不执行任何操作。应用程序编写者可以重写此方法,以便对每块字符数据采取特定的措施
    //如将该数据添加到节点或缓冲区,或者将该数据打印到文件。
    public void characters(char[] ch,int start,int length)throws SAXException{
     this.currentValue.append(ch,start,length);
    }
    //接收元素结束的通知
    //默认情况下,不执行任何操作。应用程序编写者可以在子类中重写此方法,以便在每个元素的结束处采取特定的操作
    //如,结束树节点或将输出写入文件。
    public void endElement(String uri,String localName,String qName)throws SAXException{
     this.properties.put(qName.toLowerCase(), this.currentValue.toString().trim());
    }
    //返回存储XML信息数据的properties
    public Properties getProperties(){
     return this.properties;
    }
}
public List getSAXXml(String fileName)throws Exception{
    List list = null;
    ParseXML parsexml = new ParseXML();
    Properties properties = null;
    SAXParserFactory factory = SAXParserFactory.newInstance();
    //如果由此代码生成的解析器将提供对 XML 名称空间的支持,则为 true;否则为 false。
    factory.setNamespaceAware(false);
    //指定由此代码生成的解析器将验证被解析的文档。默认情况下,其值设置为 false
    factory.setValidating(false);
    SAXParser parser = factory.newSAXParser();
    //使用指定的DefaultHandler将指定文件的内容解析为 XML。
    parser.parse(fileName, parsexml);
    properties = parsexml.getProperties();
    Enumeration em = properties.keys();
    while(em.hasMoreElements()){
     list.add(properties.get(em.nextElement().toString()));
    }
    return list;
}
/**用Dom方式解析XML文件获取数据信息,比较容易理解和掌握的一种方式very good*/
public List getDOMXml(String fileName)throws Exception{
    List list = null;
    SAXBuilder builder = new SAXBuilder();
    Document document = builder.build(new FileInputStream(fileName));
    //document.getRootElement()获取根节点返回一个Element
    List listchild = document.getRootElement().getChildren("table");
    for(int i=0;i<listchild.size();i++){
     Element e = (Element)listchild.get(i);
     String tableName = e.getChild("tablename").getText();
     List nextchild = e.getChild("fields").getChildren("field");
     list.add(tableName);
     for(int j=0;j<nextchild.size();j++){
      Element child = (Element)nextchild.get(j);
      list.add(child.getAttributeValue("name"));
     }
    }
    //返回的List的结构是以表名为0个索引位置后面依次为表的字段名称,附带XML文件描述
    return list;
}
}


<?xml version="1.0" encoding="gb2312" ?>
<tables>
<table>
      <tablename>dic_rate_zhwd</tablename>
      <fields>
         <field name="organ_id" type="string"/>
         <field name="business_id" type="string"/>
         <field name="business_name" type="string"/>
         <field name="rate" type="double"/>
    </fields>
</table>
</tables>

分享到:
评论

相关推荐

    java解析XML文件

    Java解析XML文件是Java开发中常见的一项任务,XML(eXtensible Markup Language)作为一种结构化数据存储格式,被广泛用于数据交换、配置文件和Web服务等场景。本篇文章将详细探讨Java如何利用DOM4J库来解析XML文件...

    JAVA 解析XML生成XML文档实例

    JAVA 解析XML和生成XML文档源码。比较全 1.DOM生成和解析XML文档 2.SAX生成和解析XML文档 3.DOM4J生成和解析XML文档 4.JDOM生成和解析XML

    使用java解析XML文件,解析完之后将解析结果导入mysql数据库中

    本教程将介绍如何使用Java解析XML文件,并将解析结果导入MySQL数据库。 首先,我们需要引入处理XML的Java库——JAXB(Java Architecture for XML Binding)和DOM(Document Object Model)API。JAXB用于对象与XML...

    Java 解析xml文档

    Java解析XML文档是Java开发中常见的任务,XML(Extensible Markup Language)作为一种可扩展标记语言,广泛用于数据交换、配置存储等场景。本项目涵盖了三种主流的Java XML解析方法:SAX、DOM以及DOM4J,并提供了...

    Java解析Xml文件

    Java解析XML文件是一种常见的任务,尤其在处理结构化数据或者与服务器进行数据交换时。XML(eXtensible Markup Language)是一种标记语言,用于存储和传输数据,具有良好的可读性和可扩展性。在Java中,有多种方式来...

    Java解析XML文件的DOM和SAX方式.doc

    Java 解析 XML 文件的 DOM 和 SAX 方式 Java 解析 XML 文件的 DOM 和 SAX 方式是指在 Java 中使用 Document Object Model(DOM)和 Simple API for XML(SAX)两种方式来解析 XML 文件的技术。下面将详细介绍这两种...

    java解析xml文件

    Java解析XML文件是一种常见的任务,尤其在处理结构化数据或与Web服务交互时。XML(eXtensible Markup Language)是一种标记语言,用于存储和传输数据。本程序使用Java来解析XML文件,提取其中的数据并根据需要进行...

    java解析xml文档的常用方法

    "java解析xml文档的常用方法" Java 解析 XML 文档的常用方法有四种:DOM、SAX、JDOM 和 DOM4J。下面对这四种方法进行详细的介绍: 1. 使用 DOM(JAXP Crimson 解析器) DOM(Document Object Model)是一种以层次...

    java解析XML的四种方式

    ### Java解析XML的四种方式详解 #### 一、DOM(Document Object Model) DOM是一种平台和语言中立的接口,它将XML文档表示为一个树结构,使得程序可以创建、读取、更新或删除树中的元素。DOM实现了W3C的标准,能够...

    java 解析xml 多级

    Java作为一种广泛使用的后端编程语言,提供了多种方式来解析XML文档,使得处理多级嵌套的数据变得可能。本文将详细讲解如何在Java中解析XML,特别是针对多级结构的情况。 首先,Java提供了两种主要的API来处理XML:...

    java解析xml文档方式

    ### Java解析XML文档方式 #### 引言 随着互联网的发展,XML(可扩展标记语言)因其平台、语言和系统的无关性,在数据交换和集成中扮演着至关重要的角色。本文将深入探讨Java中解析XML的四种主要方法:DOM、SAX、...

    java解析XML文件DOMO

    Java解析XML文件主要依赖于Java API中的DOM(Document Object Model)、SAX(Simple API for XML)和StAX(Streaming API for XML)等解析器。在本案例中,我们重点讨论DOM解析器,DOMO通常指的是DOM操作。DOM解析器...

    Java解析XML.zip

    本压缩包“Java解析XML.zip”包含了两个关键的第三方库:jaxen-1.1.1.jar和dom4j-1.6.1.jar,它们是Java解析XML文件的重要工具。 首先,让我们了解一下**DOM4J**。DOM4J是一个强大的Java XML API,它提供了灵活且高...

    java解析xml字符串

    ### Java解析XML字符串 在给定的代码示例中,我们看到了如何使用JDOM库来解析一个XML字符串,并对其进行操作。下面我们将详细解析这个过程: 1. **初始化XML源**:首先,将XML字符串转化为`StringReader`对象,这...

    java实现xml解析word文档代码实现

    Java 实现 XML 解析 Word 文档代码实现 基于给定的文件信息,我们可以总结出以下知识点: 1. Java 实现 XML 解析 Word 文档 Java 可以使用多种方式来解析 Word 文档,包括使用 Apache POI 库、Java2Word 库等。...

    java解析xml文件的例子(三中方式的都有,很全)

    本示例提供了三种不同的方法来解析XML文件,并结合了数据库连接,特别是使用Oracle数据库。下面将详细介绍DOM、SAX和DOM4J这三种解析器的工作原理以及如何在Java中实现它们。 1. DOM(文档对象模型)解析: DOM是一...

    Java解析XML文档[归类].pdf

    Java解析XML文档主要涉及到两种方式:SAX和DOM。本文主要关注基于树和节点的DOM解析方法。DOM解析器将整个XML文档加载到内存中,形成一个树状结构,允许开发者通过API遍历和操作XML文档的每一个部分。 首先,DOM...

Global site tag (gtag.js) - Google Analytics