`
softstone
  • 浏览: 462010 次
  • 性别: 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来说都算不上友好。

 

分享到:
评论

相关推荐

    经典的DOM解析XML范例

    用Java解析XML文档,最常用的有两种方法:使用基于事件的XML简单API(Simple API for XML)...Sun公司提供了Java API for XML Parsing(JAXP)接口来使用SAX和DOM,通过JAXP,我们可以使用任何与JAXP兼容的XML解析器

    java解析xml及4种常用解析比较

    1)DOM(JAXP Crimson解析器) DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准。DOM是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中寻找特定信息。分析该结构通常需要加载整个...

    dom4j---xml解析jar包

    dom4j是一个简单的开源库,用于处理XML、 XPath和XSLT,它基于Java平台,使用Java的集合框架,全面集成了DOM,SAX和JAXP。

    开源XML解析包dom4j

    DOM4J是dom4j.org出品的一个开源XML解析包,它的网站中这样定义: Dom4j is an easy to use, open source library for working with XML, XPath and XSLT on the Java platform using the Java Collections ...

    XML数据提取并导入数据库

    须要有SAX、DOM解析器的类文件,JDOM只是一种适合Java程序员来使用的Java XML解析器,目前流行的Java XML解析器还有:Apache Xerces Java、JAXP。 Xerces Java解析器是完全用Java编写的XML解析器,最新版本是2.5,...

    java_Dom4j解析XML详解

    DOM4J是 dom4j.org 出品的一个...DOM4J应用于 Java 平台,采用了 Java 集合框架并完全支持 DOM,SAX 和 JAXP。  DOM4J 使用起来非常简单。只要你了解基本的 XML-DOM 模型,就能使用。  Dom:把整个文档作为一个对象。

    使用dom4j操作xml

    Dom4j是一个开源的Java XML 解析处理工具,用来读写XML文件,它应用于Java平台,采用了Java集合框架并完全支持DOM, SAX和JAXP。具有性能优异、功能强大和极易使用的特点。...本文讲述了如何使用Dom4j来进行XML解析。

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。.  本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解...

    Java编程中更新XML文档的常用方法

    本文简要的讨论了Java语言编程中...为了增强JAXP使用上的灵活性,开发者特别为JAXP设计了一个Pluggability Layer,在Pluggability Layer的支持之下,JAXP既可以和具体实现DOM API、SAX API 的各种XML解析器(XML Parser,

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part3

    本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。.  本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。.  本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解...

    XML_dom_sax_dom4j:XML解析技术之dom、Sax、dom4j以及XML Schema技术约束

    XML_StuGradeExam_domXML解析技术之dom、Sax、dom4j技术演习以及Schema XML文档约束##XML解析开发包Jaxp(sun)Jdomdom4j####ExamExam是一个使用Xml持久化保存数据的xml数据库,该项目是演练dom解析XML技术很好的一个...

    Java中关于XML的API

    1、JAXP(Java API for XML Parsing) 2、JAXB(Java API for XML Binding) 3、JAXM(Java API for XML Messaging) 4、JAX-RPC(Java API for XML-RPC) 1、JAXP定义了在Java中使用DOM, SAX, XSLT的通用的接口。...

    疯狂XML讲义 源码

    《疯狂XML讲义》是疯狂Java体系丛书之一,学习《疯狂XML讲义》无须任何XMI,基础,但DOM、SAX、dora4i、JDOM解析部分包含了大量Java编程,因此建议先认真阅读疯狂Java体系的《疯狂Java讲义》一书。

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part5

    本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。.  本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解...

    疯狂xml讲义

    本书主要以XML为核心,深入地介绍了XML的... 本书是疯狂Java体系丛书之一,学习本书无须任何XML基础,但DOM、SAX、dom4j、JDOM解析部分包含了大量Java编程,因此建议先认真阅读疯狂Java体系的《疯狂Java讲义》一书。

    XML解析-dom4j.jar-jdom.jar

    Dom4j是一个易用的、开源的库,用于XML,XPath和XSLT。它应用于Java平台,采用了Java集合框架并完全支持DOM,SAX和JAXP。

    疯狂XML讲义

    由李刚编著的《疯狂XML讲义..., 《疯狂XML讲义》是疯狂Java体系丛书之一,学习本书无须任何XML基础, ,但DOM、SAX、dom4j、JDOM解析部分包含了大量Java编程,因此建议先认, 真阅读疯狂Java体系的《疯狂Java讲义》一书。

    疯狂XML讲义.part3.rar

    本书主要以XML为核心,深入地介绍了XML的各种...本书是疯狂Java体系丛书之一,学习本书无须任何XML基础,但DOM、SAX、dom4j、JDOM解析部分包含了大量Java编程,因此建议先认真阅读疯狂Java体系的《疯狂Java讲义》一书。

    J2EE中XML配置文件的读取处理

    有好几种XML解析器:主要有DOM和SAX,在apache的XML项目组中,目前有Xerces Xalan Cocoon几个开发XML相关技术的project.Tomcat本身使用的是Sun的JAXP,而其XSL Taglib project中使用Xerces解析器。

Global site tag (gtag.js) - Google Analytics