解析xml的方式
来源:互联网 发布:知乎 希尔瓦娜斯 7.0 编辑:程序博客网 时间:2024/04/30 04:22
myusers.xml
<?xml version="1.0" encoding="GBK"?>
<users xmlns="http://www.softeem.com/xml">
<user id="1">
<name>mick</name>
<pass>123</pass>
</user>
<user id="2">
<name>jack</name>
<pass>123456</pass>
</user>
</users>
第一种:DOM解析方式
package com.softeem.xml.demo;
import java.io.File;
import java.io.IOException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
public class TestDOM {
public static void main(String[] args) {
DocumentBuilderFactory factory =
DocumentBuilderFactory.newInstance();
try {
DocumentBuilder builder =
factory.newDocumentBuilder();
Document doc = builder.parse(new File
("src/com/softeem/xml/demo/myusers.xml"));
NodeList nodeList = doc.getElementsByTagName("user");
for (int i = 0; i < nodeList.getLength(); i++) {
Element user = (Element)nodeList.item(i);
System.out.println("id:"+user.getAttribute("id"));
String name = user.getElementsByTagName("name").item(i)
.getFirstChild().getNodeValue();
System.out.println("name:"+name);
String pass = user.getElementsByTagName("pass").item(i)
.getFirstChild().getNodeValue();
System.out.println("pass:"+pass);
}
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
第二种:SAX解析方式
package com.softeem.xml.demo;
import java.io.File;
import java.io.IOException;
import java.util.Stack;
import javax.xml.parsers.ParserConfigurationException;
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;
public class TestSAX extends DefaultHandler{
//定义一个栈 先进后出
Stack stack = new Stack();
public static void main(String[] args) {
SAXParserFactory factory =
SAXParserFactory.newInstance();
try {
SAXParser parser = factory.newSAXParser();
parser.parse(new File("src/com/softeem" +
"/xml/demo/myusers.xml"), new TestSAX());
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void startDocument(){
System.out.println("start......");
}
//接受文档元素开始的通知
//uri名称空间的URI
//localName 本地名称
//name 限定名称节点的值
//attributes 附加到元素的属性
public void startElement(String uri,String localName,
String name,Attributes attributes){
//把项压入栈的顶部
stack.push(name);
String id = attributes.getValue("id");
if(id != null){
System.out.println("id:"+id);
}
}
//接受元素字符数据的通知
//ch 整个文档的字符
//start 字符数据中的开始位置
//length 从字符数据中使用的字符长度
public void characters(char[] ch,int start,int length){
String value = new String(ch,start,length);
//查看栈顶
String name = (String)stack.peek();
if(name.equals("name")){
System.out.println("name:"+value);
}else if(name.equals("pass")){
System.out.println("pass:"+value);
}
}
//接受元素结束的通知
public void endElement(String uri,String localName
,String name){
//移除栈顶的对象
stack.pop();
}
//接受文档结束的通知
public void endDocument(){
try {
super.endDocument();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
第三种:JDOM解析方式
package com.softeem.xml.demo;
import java.io.File;
import java.io.IOException;
import java.util.List;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.Namespace;
import org.jdom.input.SAXBuilder;
public class TestJDOM {
public static void main(String[] args) {
SAXBuilder builder = new SAXBuilder();
try {
Document doc = builder.
build(new File("src/com/softeem/xml/demo/myusers.xml"));
Element root = doc.getRootElement();
Namespace ns = root.getNamespace();
System.out.println("ns:"+ns);
List list = root.getChildren();
for (int i = 0; i < list.size(); i++) {
Element user = (Element)list.get(i);
String id = user.getAttributeValue("id");
System.out.println("id:"+id);
String name = user.getChild("name",ns).getText();
System.out.println("name:"+name);
String pass = user.getChild("pass",ns).getText();
System.out.println("pass:"+pass);
}
} catch (JDOMException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
第四种:DOM4J解析方式
package com.softeem.xml.demo;
import java.io.File;
import java.util.Iterator;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class TestDOM4J {
public static void main(String[] args) {
SAXReader reader = new SAXReader();
try {
Document doc = reader.read(
new File("src/com/softeem/xml/demo/myusers.xml"));
Element root = doc.getRootElement();
Iterator it = root.elementIterator();
while(it.hasNext()){
Element user = (Element)it.next();
String id = user.attributeValue("id");
System.out.println("id:"+id);
String name = user.elementText("name");
System.out.println("name:"+name);
String pass = user.elementText("pass");
System.out.println("pass:"+pass);
}
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
- 解析xml的方式
- XML的解析方式
- xml的解析方式
- XML的解析方式
- 解析XML的方式
- xml的解析方式
- DOM的方式解析XML
- java 解析xml的方式
- 解析xml文档的方式
- xml文件的解析方式
- Java解析XML的方式
- JAVA解析XML的方式?
- android解析xml的方式
- XML的pull解析方式
- Xml的PULL解析方式
- XML的XPath解析方式
- Xml的pull解析方式
- Sax的Xml解析方式
- 手机游戏成2011年度GDC大会亮点
- 让你的软件飞起来:RGB转为YUV
- 简单Ai贪食蛇
- 时间片轮询模式在构建单片机实时系统中的应用
- Android 的main.mk完整分析
- 解析xml的方式
- 神经网络的基本知识(五):前向网络:BP网络
- 爱看海的男孩
- 解决Audacious 乱码问题
- 学术搜索引擎大全
- Android的传感器编程小结
- “正反离职”说
- USB骨架(一)
- ADS: (Fatal)L6002U:Could not open file:.....