XML解析方式汇总
DOM解析:
1:
public class DomPaeseXml {
public static void main(String[] args) throws Exception {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document document = db.parse(new File("student.xml") ) ;
// System.out.println(document.getXmlVersion());
// System.out.println(document.getXmlStandalone());
// System.out.println(document.getXmlVersion());
Element element = document.getDocumentElement();
System.out.println(element.getNodeName());
NodeList list = element.getChildNodes();
System.out.println(list.getLength());
for (int i = 0; i < list.getLength(); i++) {
System.out.println(list.item(i).getNodeName());
}
System.out.println("***************************");
NodeList nodeList = document.getElementsByTagName("学生");
for (int i = 0; i < nodeList.getLength(); i++) {
Element elment =(Element)nodeList.item(i);
String str = elment.getElementsByTagName("姓名").item(0).getFirstChild().getNodeValue();
System.out.println("姓名:"+str);
str = elment.getElementsByTagName("性别").item(0).getFirstChild().getNodeValue();
System.out.println("性别:"+str);
str = elment.getElementsByTagName("年龄").item(0).getFirstChild().getNodeValue();
System.out.println("年龄:"+str);
System.out.println("-------------------------------------------------");
}
for (int i = 0; i < list.getLength(); i++) {
Node node = list.item(i);
System.out.println(node.getNodeType()+" : " + node.getNodeValue());
}
}
}
2:解析任意的XML文件:
public class DomParseXml2 {
private static StringBuilder stringBuilder = new StringBuilder();
public static void main(String[] args) throws Exception {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(new File("student.xml"));
// 得到文档根元素
Element element = doc.getDocumentElement();
getChildren(element);
System.out.println(stringBuilder);
}
private static void getChildren(Element element) {
stringBuilder.append("<"+element.getNodeName());
NodeList nodeList = element.getChildNodes();
NamedNodeMap map = element.getAttributes();
//如果存在属性
if (map != null) {
for(int i=0;i<map.getLength();i++){
Attr attr = (Attr)map.item(i);
stringBuilder.append(" "+attr.getName()+"=\""+attr.getValue()+"\"");
}
}
stringBuilder.append(">");
if(nodeList!=null){
for (int i = 0; i < nodeList.getLength(); i++) {
Node node = nodeList.item(i);
short type = node.getNodeType();
if(type==Node.TEXT_NODE){
stringBuilder.append(node.getNodeValue());
}else if (type==Node.ELEMENT_NODE) {
getChildren((Element)node);
}else if (type==Node.COMMENT_NODE) {
Comment comment = (Comment)node;
stringBuilder.append("<!--"+comment.getData()+"-->");
}
}
}
stringBuilder.append("</"+element.getTagName()+">");
}
}
SAX解析,基于事件:
1:
public class SAXParseXML {
public static void main(String[] args) throws Exception {
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser parser = factory.newSAXParser();
parser.parse(new File("student.xml"),new MyHandler());
}
}
class MyHandler extends DefaultHandler{
@Override
public void endDocument() throws SAXException {
System.out.println("document end");
}
@Override
public void endElement(String uri, String localName, String name)
throws SAXException {
System.out.println("element end");
}
@Override
public void startDocument() throws SAXException {
System.out.println("document start");
}
@Override
public void startElement(String uri, String localName, String name,
Attributes attributes) throws SAXException {
System.out.println("element start");
}
}
2:
public class SAXParseXML2 {
public static void main(String[] args) throws Exception {
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser parser = factory.newSAXParser();
parser.parse(new File("student.xml"), new MyHandler2());
}
}
class MyHandler2 extends DefaultHandler {
private Stack<String> stack = new Stack<String>();
private String name;
private String age;
private String gender;
@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
stack.pop();
if("学生".equals(qName)){
System.out.println("姓名"+"="+name);
System.out.println("年龄"+"="+age);
System.out.println("性别"+"="+gender);
System.out.println();
}
}
@Override
public void startElement(String uri, String localName, String name,
Attributes attributes) throws SAXException {
stack.push(name);
for (int i = 0; i < attributes.getLength(); i++) {
String qName = attributes.getQName(i);
String value = attributes.getValue(i);
System.out.println(qName + "=" + value);
}
}
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
String tag = stack.peek();
if ("性别".equals(tag)) {
gender = new String(ch, start, length);
}
if ("姓名".equals(tag)) {
name = new String(ch, start, length);
}
if ("年龄".equals(tag)) {
age = new String(ch, start, length);
}
}
}
Jdom:
public class JdomTest1 {
public static void main(String[] args) throws Exception {
Document document = new Document();
Element root = new Element("root");
root.addContent(new Comment("this is my comment!"));
document.setRootElement(root);
Element people = new Element("person");
people.setAttribute(new Attribute("number","1"));
Element element1 = new Element("name");
element1.setText("zhangsan");
Element element2 = new Element("age");
element2.setText("12");
Element element3 = new Element("birthday");
element3.setText("2011-11-11");
Element element4 = new Element("address");
element4.addContent(new Element("country").setText("China"));
element4.addContent(new Element("city").setText("nanchang"));
element4.addContent(new Element("street").setText("bayiguangchang"));
people.addContent(element1).addContent(element2).addContent(element3).addContent(element4);
root.addContent(people);
Format format = Format.getPrettyFormat();
format.setIndent(" ");
XMLOutputter outputter = new XMLOutputter(format);
outputter.output(document,new FileOutputStream("jdom.xml"));
}
}
2:
public class JdomTest2 {
public static void main(String[] args) throws Exception {
SAXBuilder builder = new SAXBuilder();
Document document = builder.build(new File("jdom.xml"));
Element root = document.getRootElement();
System.out.println("root: "+root.getName());
List list = root.getChildren();
for (int i = 0; i < list.size(); i++) {
Element element = (Element)list.get(i);
System.out.println(element.getName());
}
List<Attribute> attrs = attrs = root.getChild("person").getAttributes();
for(Attribute attr : attrs){
System.out.println(attr.getName()+"="+attr.getValue());
}
Element element = root.getChild("person").getChild("address");
element.removeContent();
element.addContent("China");
XMLOutputter outputter = new XMLOutputter(Format.getPrettyFormat().setIndent(" "));
outputter.output(document,new FileOutputStream("jdom2.xml"));
}
}
3:
package cn.huaxia.xml.jdom;
import java.io.FileWriter;
import org.jdom.Attribute;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;
public class JdomTest3 {
public static void main(String[] args) throws Exception
{
Document document = new Document();
Element root = new Element("联系人列表").setAttribute(new Attribute("公司",
"A集团"));
document.addContent(root);
Element contactPerson = new Element("联系人");
root.addContent(contactPerson);
contactPerson
.addContent(new Element("姓名").setText("张三"))
.addContent(new Element("公司").setText("A公司"))
.addContent(new Element("电话").setText("021-55556666"))
.addContent(
new Element("地址")
.addContent(new Element("街道").setText("5街"))
.addContent(new Element("城市").setText("上海"))
.addContent(new Element("省份").setText("上海市")));
XMLOutputter output = new XMLOutputter(Format.getPrettyFormat()
.setIndent(" ").setEncoding("gbk"));
output.output(document, new FileWriter("contact.xml"));
}
}
Dom4J:
1:
public class Dom4JTest {
public static void main(String[] args) throws Exception {
Document document = DocumentHelper.createDocument();
Element element = DocumentHelper.createElement("root");
document.setRootElement(element);
Element element2 = element.addElement("student");
Element element3 = element2.addElement("name");
Element element4 = element2.addElement("age");
Element element5 = element2.addElement("sex");
element3.setText("johnny");
element4.setText("11");
element5.setText("男");
OutputFormat format = new OutputFormat(" ", true, "UTF-8");
XMLWriter writer = new XMLWriter(format);
writer.write(document);
XMLWriter writer2 = new XMLWriter(new FileOutputStream("student2.xml"),
format);
writer2.write(document);
OutputStreamWriter fileWriter = new OutputStreamWriter(new FileOutputStream(
"student3.xml"), "utf-8");
System.out.println(fileWriter.getEncoding());
XMLWriter writer3 = new XMLWriter(fileWriter, format);
writer3.write(document);
writer3.flush();
//writer3.close();
}
}
2:
public class Dom4JTest2 {
public static void main(String[] args) throws Exception {
System.out.println("---------------SAXReader----------------------");
SAXReader saxReader = new SAXReader();
Document document = saxReader.read(new File("student2.xml"));
Element element = document.getRootElement();
System.out.println("root element name: " + element.getName());
List<Element> list = element.elements();
System.out.println(list.size());
for (Iterator iterator = element.elementIterator(); iterator.hasNext();) {
Element element2 = (Element) iterator.next();
System.out.println(element2.getName());
}
Element element3 = element.element("student");
List<Element> sunElement = element3.elements();
for (Element element2 : sunElement) {
System.err.println(element2.getName() + " : " + element2.getText());
}
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory
.newInstance();
DocumentBuilder documentBuilder = documentBuilderFactory
.newDocumentBuilder();
org.w3c.dom.Document document2 = documentBuilder.parse(new File(
"student.xml"));
System.out.println("---------------DOMReader----------------------");
DOMReader domReader = new DOMReader();
Document document3 = domReader.read(document2);
Element rootElement = document3.getRootElement();
System.out.println(rootElement.getName());
}
}
XML解析方式汇总的更多相关文章
- xml解析方式之JAXP解析入门
XML解析 1 引入 xml文件除了给开发者看,更多的情况使用[程序读取xml文件]的内容.这叫做xml解析 2 XML解析方式(原理不同) DOM解析 SAX解析 3 XML解析工具 DOM解析原理 ...
- XML解析方式有哪些?
1.DOM:要求解析器吧整个XML文档装载到内存,并解析成一个Document对象. (1).优点:元素与元素之间保留结构关系,故可以进行增删改查操作. (2).缺点:XML文档过大,可能出现内存溢出 ...
- Android中的三种XML解析方式
在Android中提供了三种解析XML的方式:SAX(Simple API XML),DOM(Document Objrect Model),以及Android推荐的Pull解析方式.下面就对三种解析 ...
- XML解析方式
两种解析方式概述 dom解析 (1)是W3C组织推荐的处理XML的一种解析方式. (2)将整个XML文档使用类似树的结构保存在内存中,在对其进行操作. (3)可以方便的对XML进行增删改查的操作 (4 ...
- java xml解析方式(DOM、SAX、JDOM、DOM4J)
XML值可扩展标记语言,是用来传输和存储数据的. XMl的特定: XMl文档必须包含根元素.该元素是所有其他元素的父元素.XML文档中的元素形成了一颗文档树,树中的每个元素都可存在子元素. 所有XML ...
- XML解析方式与解析工具
DOM解析原理: 1)JAXP (oracle-Sun公司官方) 2)JDOM工具(非官方) 3)Dom4J工具(非官方) 三大框架(默认读取xml的工具就是Dom4j) ....... SAX解析原 ...
- 带URL的XML解析方式
XmlDocument xml = new XmlDocument(); xml.LoadXml(responseString); XmlNode root = xml.DocumentElement ...
- Json解析方式汇总 excel vba
一. 这种方式比较复杂,因为office版本的原因,所以要加其它函数 Private Function parseScript(strJson As String) Dim objJson As Ob ...
- iOS - 分析JSON、XML的区别和解析方式的底层是如何实现的(延伸实现原理)
<分析JSON.XML的区别,JSON.XML解析方式的底层是如何实现的(延伸实现原理)> (一)JSON与XML的区别: (1)可读性方面:基本相同,XML的可读性比较好: (2)可扩展 ...
随机推荐
- <Redis> 入门一 概念安装
Redis 概念 redis是一款高性能的NOSQL系列的非关系型数据库 什么是NOSQL NoSQL(NoSQL = Not Only SQL),意即“不仅 ...
- Python 网络编程介绍
网络编程介绍 1. 目标: 编写一个C/S架构的软件 C/S: Client ----------- 基于网络 --------- Server B/S: Browser -------- 基于网络 ...
- 【转】WinAPI: CreateFontIndirect - 根据字体结构建立逻辑字体
//声明: CreateFontIndirect( const p1: TLogFont {字体结构} ): HFONT; {返回新字体指针} //TLogFont 是 tagLOGFONTA 结构的 ...
- Python之面向对象类和对象
Python之面向对象类和对象 定义一个类:class 定义类的语法: class Test(object): """ 类里定义一类事物共同的技能. 可以是变量,也可是函 ...
- Django-rest_framework中利用jwt登录验证时,自定义返回凭证和登录校验支持手机号
安装 pip install djangorestframework-jwt 在Django.settings中配置 REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATIO ...
- 用C# ASP.net将数据库中的数据表导出到Excel中
需要用到组件GridView和一个button即可. 给GridView添加一个数据源, 选择你想要的数据库中的表的字段,添加成功后GridView中就显示数据. 再添加一个button,双击控件添加 ...
- 将 Oracle VirtualBox 中运行的虚拟机导入 VMware Fusion、Workstation 或 Player
1.从virtualbox种导出电脑为 .ova格式镜像 要导入 Oracle VirtualBox 中运行的虚拟机,必须将该虚拟机从 VirtualBox 导出到开放虚拟化格式存档(.ova 文件) ...
- POJ 2828 Buy Tickets (线段树 || 树状数组)
题目大意 一些小朋友在排队,每次来一个人,第i个人会插到第x个人的后面.权值为y.保证x∈[0,i-1]. 按照最后的队伍顺序,依次输出每个人的权值. 解题分析 好气吖.本来是在做splay练习,然后 ...
- React Native学习(五)—— 使用插件react-native-scrollable-tab-view
本文基于React Native 0.52 Demo上传到Git了,有需要可以看看,写了新内容会上传的.Git地址 https://github.com/gingerJY/React-Native-D ...
- Jquery那些事
Jquery选择器介绍: 我们可以通过Jquery选择器从网页文档中找到我们需要的DOM节点: 主要还时看文档!! (1)基本选择器 属性id 类别class 文档标签 (2)属性选 ...