解析Xml
来源:互联网 发布:高德导航端口检测工具 编辑:程序博客网 时间:2024/06/13 05:08
students.xml:
<?xml version="1.0" encoding="UTF-8"?>
<students>
<student sid="1" sname="hug">
<sage>140</sage>
<ssex>男</ssex>
</student>
<student sid="2" sname="hug2">
<sage>120</sage>
<ssex>男</ssex>
</student>
</students>
解析以上xml:
TestParseXMLByDOM.java:
package com.zking.test;
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.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
/**
* 使用DOM解析XML
* @author Administrator
*
*/
public class TestParseXMLByDOM {
public static void main(String[] args) {
try {
//1.实实例化DocumentBuilderFactory
DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
//2.通过dbf获取DocumentBuilder
DocumentBuilder db=dbf.newDocumentBuilder();
//3.解析
Document document=db.parse(new File("students.xml"));
//4.获取跟节点<students>
Element students=document.getDocumentElement();
//5.获取所有的<student>节点
NodeList nodeList=students.getElementsByTagName("student");
for (int i = 0; i < nodeList.getLength(); i++) {
//node element
Element student=(Element) nodeList.item(i);
//获取属性
String sid=student.getAttribute("sid");
String sname=student.getAttribute("sname");
//获取<student>下面的<sage><ssex>
Element elementSage=(Element) student.getElementsByTagName("sage").item(0);
Element elementSsex=(Element) student.getElementsByTagName("ssex").item(0);
String sage=elementSage.getTextContent();
String ssex=elementSsex.getTextContent();
System.out.println(sid+" "+sname+" "+sage+" "+ssex);
//获取<student>下面的<sage><ssex>
/*NodeList nodeListChild=student.getChildNodes();
for (int j = 0; j < nodeListChild.getLength(); j++) {
Node node=nodeListChild.item(j);
if(node.getNodeType()==Node.ELEMENT_NODE){
Element element=(Element) nodeListChild.item(j);
//获取标签的名字
String elementName=element.getNodeName();
if("sage".equals(elementName)){
//获取<sage>的值
String sage=element.getTextContent();
System.out.println(" "+sage);
}else if("ssex".equals(elementName)){
String ssex=element.getTextContent();
System.out.println(" "+ssex);
}
}
}*/
}
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
TestParseXMLByDom4j.java:
package com.zking.test;
import java.io.File;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
/**
* 使用dom4j解析XML
* @author Administrator
*
*/
public class TestParseXMLByDom4j {
public static void main(String[] args) {
try {
SAXReader saxReader=new SAXReader();
Document document=saxReader.read(new File("students.xml"));
Element root=document.getRootElement();
List<Element> student=root.elements("student");
for (Element element : student) {
String sid=element.attributeValue("sid");
String sname=element.attributeValue("sname");
//子标签
Element elementSage=element.element("sage");
Element elementSsex=element.element("ssex");
String sage=elementSage.getTextTrim();
String ssex=elementSsex.getTextTrim();
System.out.println(sid+" "+sname+" "+sage+" "+ssex);
}
} catch (DocumentException e) {
e.printStackTrace();
}
}
}
TestParseXMLBySAX.java:
package com.zking.test;
import java.io.File;
import java.io.IOException;
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;
/**
* 使用SAX解析XML
* @author Administrator
*
*/
public class TestParseXMLBySAX {
public static void main(String[] args) {
try {
//1.实例化SAXParserFactory
SAXParserFactory spf=SAXParserFactory.newInstance();
//2.通过spf获取SAXParser
SAXParser saxParser=spf.newSAXParser();
//3.开始解析
saxParser.parse(new File("students.xml"), new DefaultHandler(){
String currentTagName=null;
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
super.characters(ch, start, length);
if("sage".equals(currentTagName)){
String sage=new String(ch, start, length);
System.out.println(sage);
}else if("ssex".equals(currentTagName)){
String ssex=new String(ch, start, length);
System.out.println(ssex);
}
}
@Override
public void endElement(String uri, String localName,
String qName) throws SAXException {
super.endElement(uri, localName, qName);
currentTagName=null;
}
@Override
public void startElement(String uri, String localName,
String qName, Attributes attributes)
throws SAXException {
super.startElement(uri, localName, qName, attributes);
currentTagName=qName;
if("student".equals(qName)){
String sid=attributes.getValue(0);
String sname=attributes.getValue(1);
System.out.println(sid+" "+sname);
}
}
});
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
- XML解析
- xml解析
- XML解析
- 解析XML
- xml解析
- 解析xml
- 解析xml
- xml解析
- XML解析
- xml解析
- XML解析
- xml解析
- xml解析
- xml解析
- xml解析
- xml解析
- 解析xml
- XML解析
- Windows7 visual studio 2010下MFC中正确使用GDI+的环境配置
- 【转】STL中stack的用法
- 二叉树遍历小结
- java.net.SocketException: Software caused connection abort: recv failed
- redis-zset
- 解析Xml
- 如何在开发过程中快速实现页面功能
- 高精度算法
- Android代码通过包名调用系统卸载程序
- yuv420sp crop from any startpoint and width and height
- python IDLE怎么清屏
- 积分系统(8)-编辑公告之界面层
- STL 中队列的使用(queue)
- QListWidget和QTableWidget的使用和属性;QTableWidget和QListWidget样式表的设置及滚动条的样式设置