XML解析
来源:互联网 发布:淘宝返现规则 编辑:程序博客网 时间:2024/06/08 09:56
现在来说一说XML解析
下面为xml解析图解
上图基本为xml三种解析的实现思路代码如下,
Dom解析
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();
}
}
}
2.dom4j解析
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();
}
}
}
3.sax解析
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解析
- Java基础——注解(Annotation)
- Hibernate逆向代码问题
- c++ 用socket实现TCPIP通信
- MSSQL起手式
- (15)spring boot使用@Value,@PropertySource注解使用
- XML解析
- Magento 2 日志的更多细节及数据库日志活动
- build zxing 3.3.1
- 文件属性相关(一)
- 计蒜客 2017 第四场 商汤科技的行人检测(中等)(几何)
- NoSQL简介
- glog使用说明
- java关键字
- OpenCV3.2学习笔记之常用函数