手机
当前位置:查字典教程网 >编程开发 >Java >java解析xml常用的几种方式总结
java解析xml常用的几种方式总结
摘要:各种方法都用过。现在总结一下。经常记不住,要找资料。现在总结一下。xml文件如下:复制代码代码如下:EverydayItalianGiada...

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

xml 文件如下:

复制代码 代码如下:

<?xml version="1.0" encoding="ISO-8859-1"?>

<bookstore>

<book category="COOKING">

<title lang="en">Everyday Italian</title>

<author>Giada De Laurentiis</author>

<year>2005</year>

<price>30.00</price>

<aa>

<bb>

<cc>ccccc</cc>

</bb>

</aa>

</book>

<book category="CHILDREN">

<title lang="en">Harry Potter</title>

<author>J K. Rowling</author>

<year>2005</year>

<price>29.99</price>

</book>

<book category="WEB">

<title lang="en">XQuery Kick Start</title>

<author>James McGovern</author>

<author>Per Bothner</author>

<author>Kurt Cagle</author>

<author>James Linn</author>

<author>Vaidyanathan Nagarajan</author>

<year>2003</year>

<price>49.99</price>

</book>

<book category="WEB">

<title lang="en">Learning XML</title>

<author>Erik T. Ray</author>

<year>2003</year>

<price>39.95</price>

</book>

</bookstore>

复制代码 代码如下:

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解析xml常用的几种方式总结】相关文章:

使用java获取md5值的两种方法

Java解析XML的四种方法详解

Java生成随机数的2种示例方法代码

java获取日期的方法

java中的正则操作方法总结

java中使用sax解析xml的解决方法

Java命名规则详细总结

基于java中正则操作的方法总结

Java实现几种常见排序算法代码

Java反射机制的学习总结

精品推荐
分类导航