当前位置:  编程技术>java/j2ee

java解析xml常用的几种方式总结

    来源: 互联网  发布时间:2014-10-29

    本文导语:  各种方法都用过。现在总结一下。 经常记不住,要找资料。现在总结一下。 xml 文件如下: 代码如下:  Everyday Italian  Giada De Laurentiis  2005  30.00         ccccc       Harry Potter  J K. Rowling  2005  29.99   XQuery Kick Start  James Mc...

各种方法都用过。现在总结一下。 经常记不住,要找资料。现在总结一下。

xml 文件如下:

代码如下:




  Everyday Italian
  Giada De Laurentiis
  2005
  30.00
 
   
    ccccc
   
 


  Harry Potter
  J K. Rowling
  2005
  29.99


  XQuery Kick Start
  James McGovern
  Per Bothner
  Kurt Cagle
  James Linn
  Vaidyanathan Nagarajan
  2003
  49.99


  Learning XML
  Erik T. Ray
  2003
  39.95


代码如下:

package sort;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
public class D2 {
 /**
  * 直接使用DOM解析
  * @param args
  * @throws Exception
  */
 public static void main(String[] args) throws Exception{

  DocumentBuilder sb =  DocumentBuilderFactory.newInstance().newDocumentBuilder();

  Document root = sb.parse(D2.class.getClassLoader().getResourceAsStream("NewFile.xml"));

  System.out.println(root.getChildNodes().item(0).getNodeName());

 }
}

代码如下:

package sort;

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

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

import com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl;

public class D {

 /**
  * 使用SAX解析
  * @param args
  * @throws Exception
  */
 public static void main(String[] args) throws Exception {

  SAXParserFactory factory = SAXParserFactoryImpl.newInstance();
  SAXParser parser = factory.newSAXParser() ;
  parser.parse(D.class.getClassLoader().getResourceAsStream("NewFile.xml"),
    new DefaultHandler(){

     @Override
     public void characters(char[] ch, int start, int length)
       throws SAXException {
      System.out.println("characters");
     }

     @Override
     public void endDocument() throws SAXException {
      // TODO Auto-generated method stub
      System.out.println("endDocument");
     }

     @Override
     public void endElement(String uri, String localName,
       String qName) throws SAXException {
      // TODO Auto-generated method stub
      System.out.println("endElement");
     }

     @Override
     public void startDocument() throws SAXException {
      // TODO Auto-generated method stub
      System.out.println("startDocument");
     }

     @Override
     public void startElement(String uri, String localName,
       String qName, Attributes attributes)
       throws SAXException {
      // TODO Auto-generated method stub
      System.out.println("startElement");
     }

  }) ;

  
 }

}

代码如下:

package sort;

import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamReader;

public class D3 {

 /**
  * 使用XMLStream解析
  * @param args
  * @throws Exception
  */
 public static void main(String[] args) throws Exception {

  XMLInputFactory xmlFactor = XMLInputFactory.newFactory();

  XMLStreamReader reader =
   xmlFactor.createXMLStreamReader(D3.class.getClassLoader().getResourceAsStream("NewFile.xml"));
  while(reader.hasNext()){
   int point = reader.next() ;
   switch(point){
   case XMLStreamReader.START_ELEMENT :
    System.out.println("start_element");
   case XMLStreamReader.END_ELEMENT :
    // do something...
   }

  }

 }

}

代码如下:

package sort;

import org.dom4j.Document;
import org.dom4j.io.SAXReader;

/**
 * 使用DOM4j XPATH解析XML (需要加入依赖jar文件)
 * @author zhoufeng
 *
 */
public class D4 {

 public static void main(String[] args) throws Exception{

  SAXReader reader = new SAXReader() ;

  Document root = reader.read(D4.class.getClassLoader().getResourceAsStream("NewFile.xml"));

  /* 选择所有的cc节点 */
  System.out.println(root.selectNodes("//cc").size());;

  /*选择所有的book节点,并且有子节点author的*/
  System.out.println((root.selectNodes("//book[author]").size()));;

  /* 选择所有book节点,并且有属性category的   */
  System.out.println((root.selectNodes("//book[@category]").size()));;

  /* 选择所有book节点,并且有子节点author值为James McGovern ,并且还有category属性节点值为WEB   下面的price节点*/
  System.out.println(root.selectNodes("//book[author='James McGovern'][@category='WEB']/price").size());;

 }

}


    
 
 

您可能感兴趣的文章:

  • java 公式解析 表达式解析 expression-analyzer
  • 请问各位:我用SUN公司的JAXP开发包解析XML文档,可不知道对XML解析后如何将结果写回文件中。请各位熟悉Java和XML的高手帮忙。
  • java解析xml之jdom解析xml示例分享
  • Java 的解析器代码生成器 AustenX
  • Java的HTML解析器 Jerry
  • java解析xml之dom4j解析xml示例分享
  • java解析xml之dom解析xml示例分享
  • Java的CSV解析包 CSVBeans
  • Java的CSV解析包 CSVObjects
  • 求教JAVA中XML解析问题
  • Java表达式解析器 JExel
  • Java代码解析工具 JavaFE
  • Java表达式语法解析库 parboiled
  • Java的HTML解析包 jScraper
  • Java的 RSS/Atom的解析器 FeedParser
  • Java的HL7解析器 HAPI
  • java解析xml用什么包?
  • 有什么java包可以支持解析html的。
  • Java结构化数据解析包 Lycia
  • Java的HTML解析库 gohtml
  • Java 常用工具包 JCake
  • 谁能提供JAVA常用词汇的一个下载地址?
  • 用java的话,能调用linux的一些常用命令么?比如find等等
  • 各位在linux下常用什么工具开发 , C , C++ 还是 Java ? 那个比较普遍一些
  • Google的Java常用类库 Guava
  • 用JAVA开发三层结构系统的服务器端最常用那几个类?
  • 请问:常用的JAVA2的编译器有哪些啊???
  • 用java,报表的问题怎么解决,有哪些常用的方案,请大家畅所欲言!
  • 想学Java但不知道最常用的开发工具,请各位兄弟指点指点,谢谢
  • Web服务器/前端 iis7站长之家
  • 请高手推荐1-3本学习 JAVA的好书。常用VC,想学一下JAVA.
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 听说java有一种数据库连接池的方式,效率比使用jdbc驱动程序高。不知是否真的这样?具体方式怎么实现?
  • 高手帮忙:如何用java读取数据(从ftp服务器上一个文本文件)但不采用get的方式直接读取,打印数据内容(web方式)
  • Java程序能否以后台方式运行?
  • 请问如何通过telnet的方式启动服务器(solaris)上的用.sh角本方式启动java写的应用程序,在退出telnet时服务器上的应用程序不会退出?
  • 谁帮忙把Java Web Start的快捷方式发给我?
  • 在java中如果想将一个文件以二进制的方式打开,应如何做?
  • java中如何使参数传递按传"引用"方式进行?
  • MM求助:怎样多线程下载http://java.sun.com上的东东? 用http方式,谢谢了.
  • java中读取.txt和读取.ini文件的方式和命令是否一样
  • Java Map的几种循环方式总结
  • 在JBuilder 5.0中,我打开一个单独的java文件,怎么编译和运行他?用命令行方式是可以的
  • java或者是jsp中处理字符串、时间等的函数在那里可以查到资料?或者他们都是采用对象的方式?那么资料在那里可以查到?
  • 高手不屑,菜鸟很急的问题。除了用dos命令,有更好的方式运行java吗?
  • 浅析java中Integer传参方式的问题
  • 在Java swing中如何将所画的图案以文件的方式保存起来.
  • 现在java开发中流行通过什么方式实现对数据库操作?就好像Visual Stadio通过ADO访问数据库。
  • java实现voctor按指定方式排序示例分享
  • java的四舍五入问题(1.15是1.2;1.45就是1.4?)真是搞不懂,我用的是DecimalFormat的方式(在线等)
  • olap工具软件,主体开发工作已经完成,欠缺web方式交互式的分析数据功能,欲通过java来完成,寻求合作
  • java单例模式4种使用方式分享
  • java命名空间java.sql类types的类成员方法: java_object定义及介绍
  • 我想学JAVA ,是买THINK IN JAVA 还是JAVA2核心技术:卷1 好???
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: imageflavor定义及介绍
  • 请问Java高手,Java的优势在那里??,Java主要适合于开发哪类应用程序
  • java命名空间java.lang.management类managementfactory的类成员方法: getcompilationmxbean定义及介绍
  • 如何将java.util.Date转化为java.sql.Date?数据库中Date类型对应于java的哪个Date呢
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getlibrarypath定义及介绍
  • 谁有电子版的《Java编程思想第二版(Thinking in java second)》和《Java2编程详解(special edition java2)》?得到给分
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getstarttime定义及介绍
  • 本人想学java,请问java程序员的待遇如何,和java主要有几个比较强的方向
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: stringflavor定义及介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3