一:Dom解析xml
package com.carlinfo.xmlparse;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
/**
* 使用Dom解析Xml
*/
public class DomParseXml
{
public static void main(String[] args) throws Exception
{
//第一步,创建Dom解析工厂
DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
//第二步,使用Dom解析工厂创建Dom解析器
DocumentBuilder builder = builderFactory.newDocumentBuilder();
//第三步,获取整个文档对象
Document document = builder.parse(""D:/IDEA project/bigdata/src/bookstore.xml"");
//第四步,获取根节点
Element rootelement = document.getDocumentElement();
//第五步,获取子节点
NodeList bookchildnodes = rootelement.getChildNodes();
//循环列出所有子节点
for (int i = 0; i < bookchildnodes.getLength(); i++)
{
Node node = bookchildnodes.item(i);
// System.out.println(node.getNodeType());
//如果这个子节点不是文本节点,那么继续获取他的子节点
if (node.getNodeType() != Node.TEXT_NODE)
{
Element bookElemen = (Element) node;
String id = bookElemen.getAttribute("id");
NodeList childNodes = bookElemen.getChildNodes();
//再列出这一层所有的子节点
for (int j = 0; j < childNodes.getLength(); j++)
{
Node node1 = childNodes.item(j);
// System.out.println(node1);
//再判断,当这个节点不是文本节点的时候,输出他的子节点
if (node1.getNodeType() != Node.TEXT_NODE)
{
Element element = (Element) node1;
String elementTextContent = element.getTextContent();
System.out.println(elementTextContent);
}
}
}
}
}
}
二:Sax解析xml
package com.carlinfo.xmlparse;
import org.xml.sax.Attributes;
import org.xml.sax.HandlerBase;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import javax.xml.stream.events.StartDocument;
import java.io.File;
/**
* 使用Sax解析xml
*/
public class SaxParseXml
{
public static void main(String[] args) throws Exception
{
//创建Sax解析器工厂
SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();
//使用Sax解析器工厂创建解析器
SAXParser saxParser = saxParserFactory.newSAXParser();
saxParser.parse(new File("D:/IDEA project/bigdata/src/bookstore.xml"), new DefaultHandler()
{
@Override
public void startDocument() throws SAXException
{
System.out.println("文档的开始");
}
@Override
public void endDocument() throws SAXException
{
System.out.println("文档的结束");
}
@Override
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException
{
System.out.println("元素的开始");
}
@Override
public void endElement(String uri, String localName, String qName) throws SAXException
{
System.out.println("元素的结束");
}
@Override
public void characters(char[] ch, int start, int length) throws SAXException
{
System.out.println(new String(ch, start, length));
}
});
}
}
三:Dom4j解析xml
package com.carlinfo.dom4jparse;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import java.io.InputStream;
import java.util.List;
public class Dom4jParse
{
public static void main(String[] args) throws DocumentException
{
//创建dom4j的解析器
SAXReader saxReader = new SAXReader();
//获取类路径下面的文件最后作为一个流对象
InputStream inputStream = Dom4jParse.class.getClassLoader().getResourceAsStream("bookstore.xml");
//解析流对象代表的文件冰箱且返回一个文档对象
Document document = saxReader.read(inputStream);
//获取根节点
Element rootElement = document.getRootElement();
List<Element> bookList = rootElement.elements("book");
for (Element bookElement : bookList)
{
String id = bookElement.attributeValue("id");
String name = bookElement.element("name").getText();
String author = bookElement.element("author").getText();
System.out.println(id + "\t" + name + "\t" + author);
}
}
}