`
softstone
  • 浏览: 480163 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Java XML解析之 JAXP

阅读更多

        JAXP严格来说我觉得只能算是一个解析XML的抽象层,Java应用可以通过Jaxp支持多种处理xml的底层实现,在API上沿用了w3c的Dom和Sax接口,乏善可陈。事实上Dom4j通过支持Jaxp也可以拥有Jaxp这层抽象的优点,不明白sun为什么不在Jaxp这层抽象上定义更好用的接口。 

1、使用Sax接口

SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser parser = factory.newSAXParser();
parser.parse(new File(args[0]), new MyHandler());

//定义Sax回调实现
class MyHandler extends DefaultHandler {
    // SAX callback implementations from ContentHandler, ErrorHandler, etc.
}

2、使用Dom接口

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();   
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(in);

//一个遍历的简单示例

public void printTree(Node node, String pre)
    
...{
        
switch (node.getNodeType())
        
...{
        
case Node.ATTRIBUTE_NODE:
            System.out.print(pre 
+ node.getNodeName() + " = ");
            System.out.println(node.getNodeValue());
            
break;
        
case Node.DOCUMENT_NODE:
            Document doc 
= (Document) node;
            printTree(doc.getDocumentElement(), 
"");
            
break;
        
case Node.ELEMENT_NODE:
            System.out.println(pre 
+ node.getNodeName());
            NamedNodeMap map 
= node.getAttributes();
            
for (int i = 0; i < map.getLength(); i++)
            
...{
                Node attr 
= map.item(i);
                printTree(attr, pre);
            }

            NodeList list 
= node.getChildNodes();
            
for (int i = 0; i < list.getLength(); i++)
            
...{
                Node child 
= list.item(i);
                printTree(child, pre 
+ "  ");
            }

            
break;
        
case Node.TEXT_NODE:
            
if (node.getTextContent() == null
                    
|| node.getTextContent().trim().equals(""))
            
...{
                
break;
            }

            System.out.println(pre 
+ node.getTextContent());
            
break;
        
default:
            
break;
        }
        
    }

输出Document

 

    public void write(Document doc, OutputStream out)
            
throws TransformerException, UnsupportedEncodingException,
            IOException
    
...{
        TransformerFactory tfactory 
= TransformerFactory.newInstance();
        Transformer former 
= tfactory.newTransformer();
        Source source 
= new DOMSource(doc);
        StringWriter buffer 
= new StringWriter();
        StreamResult result 
= new StreamResult(buffer);
        former.transform(source, result);
        out.write(buffer.toString().getBytes(
"GBK"));
    }

 

 上面的DefaultHandler和Document都是w3c定义的,对Java来说都算不上友好。

 

分享到:
评论

相关推荐

    XML_JAVA指南.rar_WORKING_java Tutorial_java xml_jaxp_xml

    在Java中,处理XML文档时,Java API for XML Parsing(JAXP)是一个核心工具集,它提供了在Java环境中解析XML的接口和类。 **XML的基本概念** XML文档由元素、属性、文本和注释组成。元素是XML文档的基本构建块,...

    java xml文件解析

    DOM4J是一个基于Java的高效XML解析库,它是对DOM和SAX API的一个简单而强大的封装。DOM4J提供了更简洁的API,使得XML的解析和操作更加容易。DOM4J已成为XML解析的一种流行选择。 ### 性能对比 不同解析方式之间的...

    XML的Jaxp解析示例和简单项目

    本文将深入探讨XML的解析方式之一——JAXP(Java API for XML Processing),并提供一个简单的JAXP解析XML项目的概述。 ### JAXP简介 JAXP是Java平台上的标准API,它提供了处理XML的两种主要方法:解析和转换。在...

    JSR 206 Java API for XML Processing (JAXP) 1.3

    JSR 206定义了Java API for XML Processing(JAXP)1.3规范,该规范是Java平台处理XML文档的标准方式之一。此版本为JAXP带来了诸多改进和新特性,进一步提升了Java应用程序处理XML数据的能力。 #### 二、背景与意义...

    java XML 编程指南

    在Java中,我们使用Java API for XML Processing (JAXP)来实现XML解析。JAXP提供了一个统一的接口,可以切换不同解析器。同时,Java还提供了更高级的API,如DOM Level 3、SAX2和 Streaming API for XML (StAX),以...

    java源码:XML解析器 Xerces.rar

    Java源码:XML解析器Xerces是一款经典的开源XML解析库,它为Java开发者提供了处理XML文档的强大工具。Xerces是由Apache软件基金会开发并维护的,是Java平台上的一个重要组件,广泛应用于各种XML相关的项目中。在这个...

    java dom 解析 xml 实例

    Java DOM 解析 XML 实例是 Java 语言中常用的 XML 解析方法之一,使用 W3C 推荐的文档对象模型(Document Object Model,DOM)来解析 XML 文档。DOM 提供了一个树形结构的对象模型,通过遍历树形结构可以访问和操作 ...

    java解析xml的四种经典方法

    在选择XML解析方法时,应根据应用需求考虑:如果XML文件较小,DOM可能是最简单的选择;如果文件较大,SAX或StAX更适合,其中StAX在需要一些查找功能时更有优势;对于需要更简单API和性能平衡的场景,JDOM是个不错的...

    Java XML编程指南

    本指南将深入探讨如何在Java应用程序中有效地读取、解析、创建和操作XML文档。 一、XML基础 XML是一种自描述的语言,它通过标签来定义数据的结构。每个XML文档都有一个根元素,包含了其他元素,这些元素可以嵌套,...

    JAXP 专述――Sun 的 Java API for XML 语法分析

    《深入解析JAXP:Sun的Java API for XML解析》 在探讨JAXP(Java API for XML Processing)这一主题时,我们需首先明确其在Java与XML领域中的定位与价值。JAXP并非旨在革新XML处理的方式,也不提供额外的语法分析...

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

    在 Java 中使用 DOM 方式解析 XML 文件需要使用 JAXP(Java API for XML Processing),首先需要创建一个解析器工厂,然后使用工厂创建一个具体的解析器对象。然后,使用解析器对象来解析 XML 文件,得到一个 ...

    使用JAXP之SAX读取XML内容

    JAXP(Java API for XML Processing)是Java平台上的XML处理标准,它提供了包括SAX在内的三种解析方式,即DOM(Document Object Model)、SAX和XSLT。本篇文章将深入探讨如何使用JAXP的SAX解析器来读取XML内容。 ...

    Java and XML(英文第三版)_java_xml_birdsolc_源码

    4. **JAXP(Java API for XML Processing)**:JAXP提供了XML解析和转换的接口,支持DOM、SAX和XSLT,是Java平台上处理XML的基础。 5. **XPath**:XPath是用于在XML文档中查找信息的语言,它可以根据表达式选取节点...

    java解析XML的4种经典方法

    DOM(Document Object Model)是W3C推荐的一种XML解析标准,它将XML文档转换为一个内存中的树形结构,方便开发者通过遍历节点来访问和操作XML数据。DOM解析器如JAXP的Crimson,会一次性加载整个XML文档,因此对于小...

    基于Java的实例源码-XML解析器 Xerces.zip

    Xerces-Java是Xerces解析器的Java实现,提供了多种XML解析技术,包括DOM(Document Object Model)、SAX(Simple API for XML)和JAXP(Java API for XML Processing)。这些解析方式各有特点: 1. DOM:这是一种将...

    解析xml,生成java类

    一、XML解析原理 1. DOM解析:DOM(Document Object Model)模型将XML文档视为一个树形结构,通过创建一个内存中的文档对象模型来解析XML。这种方法适合小规模的XML文件,因为会将整个文件加载到内存中。 2. SAX...

    Java操作XML编程实例解析.doc

    7. **异常处理**:在处理可能抛出异常的操作时,如文件I/O和XML解析,通常使用try-catch语句来捕获并处理异常。在上述代码中,`readXMLFile`和`writeXMLFile`方法都声明了可能抛出的异常,并在catch块中处理异常情况...

Global site tag (gtag.js) - Google Analytics