XML解析代码课堂讲解实例
//获取所有的子元素,不包括回车
package com.dom4jDemo;
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;
public class Dom4jDemo1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
String path = "src/scores.xml";
File file = new File(path);
SAXReader saxReader = new SAXReader();
try {
Document doc = saxReader.read(file);
Element root = doc.getRootElement();
//获取所有的子元素,不包括回车
List<Element> eles = root.elements();
for(Element ele : eles){
System.out.println(ele.getName());
List<Element> children = ele.elements();
for(Element e : children){
System.out.println(e.getName() + "\t" + e.getText());
}
}
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
DOM4j
``package com.dom4jDemo;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
public class Dom4jDemo2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
String path = "src/scores.xml";
File file = new File(path);
SAXReader saxReader = new SAXReader();
try {
Document doc = saxReader.read(file);
//获取根元素
Element root = doc.getRootElement();
//获取一个指定名字的子元素
Element eleStu = root.element("student");
//复制节点
Element newStu = (Element) eleStu.clone();
//获取子元素并设置值
newStu.element("id").setText("5");
newStu.element("name").setText("孙七");
newStu.element("lesson").setText("hibernate");
newStu.element("score").setText("92");
root.add(newStu);
//删除节点
root.remove(eleStu);
//设置输出编码
OutputFormat of = OutputFormat.createCompactFormat();
of.setEncoding("GBK");
//构建输出流对象
XMLWriter xw
= new XMLWriter(new FileWriter(file),of);
xw.write(doc);
xw.close();
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
package com.dom;
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;
public class DomDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
//文件路径
String path = "src/scores.xml";
//创建解析器工厂
DocumentBuilderFactory dbf
= DocumentBuilderFactory.newInstance();
DocumentBuilder db = null;
try {//使用解析器工厂创建解析器
db = dbf.newDocumentBuilder();
//将XML文件映射成文档对象
Document doc = db.parse(path);
//根元素
Element root = doc.getDocumentElement();
System.out.println(root.getNodeName());
//获取所有的子元素,包含换行和标签元素
NodeList children = //root.getChildNodes();
//获取标签名为student的元素集合,不包括换行
root.getElementsByTagName("student");
for(int i = 0; i < children.getLength();i++){
Node node = children.item(i);
//跳过换行
// if(node.getNodeType() == Node.TEXT_NODE){
// continue;
// }
System.out.println(node.getNodeName() + “\t” + node.getNodeValue());
Element ele = (Element)node;
//获取子元素的子元素
NodeList childNodes = ele.getChildNodes();
for(int j = 0;j < childNodes.getLength();j++){
Node n = childNodes.item(j);
if(n.getNodeType() == Node.TEXT_NODE){
continue;
}
System.out.println(n.getNodeName() + “\t” + n.getTextContent());
}
System.out.println(childNodes.getLength());
}
System.out.println(“子元素的数量:” + children.getLength());
} 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();
}
}
}
package com.dom;
import java.io.FileOutputStream;
import java.io.IOException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.xml.sax.SAXException;
public class DomDemo2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
String path = "src/scores.xml";
DocumentBuilderFactory dbf
= DocumentBuilderFactory.newInstance();
DocumentBuilder db = null;
try {
db = dbf.newDocumentBuilder();
Document doc = db.parse(path);
Element root = doc.getDocumentElement();
//第一种添加元素的办法
// Element eleStu = doc.createElement(“student”);
// Element eleId = doc.createElement(“id”);
// eleId.setTextContent(“3”);//设置文本值
// Element eleName = doc.createElement(“name”);
// eleName.setTextContent(“王五”);
// Element eleLesson = doc.createElement(“lesson”);
// eleLesson.setTextContent(“oracle”);
// Element eleScore = doc.createElement(“score”);
// eleScore.setTextContent(“78”);
// eleStu.appendChild(eleId);
// eleStu.appendChild(eleName);
// eleStu.appendChild(eleLesson);
// eleStu.appendChild(eleScore);
// root.appendChild(eleStu);//添加元素至根元素
//第二种添加元素的办法
//获取要添加的元素的模板,获取一个现有元素
Element eleStu = (Element) root.getElementsByTagName(“student”).item(0);
//复制现有元素创造一个新元素,包含换行
Element newEle = (Element) eleStu.cloneNode(true);
Node nodeId = newEle.getElementsByTagName(“id”).item(0);
nodeId.setTextContent(“4”);
Node nodeName = newEle.getElementsByTagName(“name”).item(0);
nodeName.setTextContent(“赵六”);
Node nodeLesson = newEle.getElementsByTagName(“lesson”).item(0);
nodeLesson.setTextContent(“JQuery”);
Node nodeScore = newEle.getElementsByTagName(“score”).item(0);
nodeScore.setTextContent(“88”);
root.appendChild(newEle);//添加元素至根元素
//保存文件
TransformerFactory tff =
TransformerFactory.newInstance();
Transformer tf = tff.newTransformer();
//设置要保存哪些内容到XML文件,默认是整个
DOMSource ds = new DOMSource(doc);
//设置保存编码
tf.setOutputProperty(OutputKeys.ENCODING, “UTF-8”);
StreamResult sr = new StreamResult(new FileOutputStream(path));
tf.transform(ds, sr);
System.out.println(“保存完成”);
} 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();
} catch (TransformerConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (TransformerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
“`
版权声明:本文为博主原创文章,未经博主允许不得转载。
XML解析代码课堂讲解实例的更多相关文章
- iOS 中的XML解析代码(SAX)
1.XML解析(SAX) NSXMLParser SAX 大文件 1)打开文档 - (void)parserDidStartDocument:(NSXMLParser *)parser 2)开始查找起 ...
- xml解析代码示例
List<Entry> list = new ArrayList<>(); Entry entry = null; try { int eventType = response ...
- XML解析代码
import java.io.File; import java.io.IOException; import java.util.HashMap; import java.util.LinkedLi ...
- XML解析与xml和Map集合的互转
1.XML的解析.首先解析XML文件我们需要先获取到文件的存放路径,获取方法有三种分别获取xml文件不同的存放路径. 代码: public class PropertiesDemo { public ...
- Java XML解析工具 dom4j介绍及使用实例
Java XML解析工具 dom4j介绍及使用实例 dom4j介绍 dom4j的项目地址:http://sourceforge.net/projects/dom4j/?source=directory ...
- Delphi之通过代码示例学习XML解析、StringReplace的用法(异常控制 good)
*Delphi之通过代码示例学习XML解析.StringReplace的用法 这个程序可以用于解析任何合法的XML字符串. 首先是看一下程序的运行效果: 以解析这样一个XML的字符串为例: <? ...
- Java Dom解析的三个实例
概述 Dom解析的文章已经烂大街了.在这里,只举三个场景下如何编码的例子: xml内有多个同名节点,获取这多个同名节点 已获取到某个节点,生成这个节点的xml描述 修改节点某属性的值 详细的讲解看官请 ...
- Cocos2d-x 3.0 Json用法 Cocos2d-x xml解析
Cocos2d-x 3.0 加入了rapidjson库用于json解析.位于external/json下. rapidjson 项目地址:http://code.google.com/p/rapidj ...
- Spring之XML解析
XML解析,我们可以通过我们常用的以下代码作为入口 也许,我们习惯使用第一种加载方式,但是以前也存在 第二种加载,并且这两种加载也有差别,下面再来分析. 先分析 第二种 使用 BeanFactory ...
随机推荐
- MainWindows
开发带有菜单栏状态栏等常用windows应用时候使用
- next()和nextLine()的区别
众所周知,在Java中输入字符串有两种方法,就是next()和nextLine(),今天研究了一下其中的区别. 首先,nextLine()的输入是碰到回车就终止输入,而next()方法是碰到空格,回车 ...
- webdriver与JS操作浏览器元素
1.JQuery的选择器实例 语法 描述 $(this) 当前 HTML 元素 $("p") 所有 <p> 元素 $("p.intro") 所有 c ...
- DAS、NAS、SAN
目前磁盘存储市场上,存储分类(如下表一)根据服务器类型分为:封闭系统的存储和开放系统的存储,封闭系统主要指大型机,AS400等服务器, 开放系统指基于包括Windows.UNIX.Linux等操作系统 ...
- Linux中cp命令不提示直接覆盖的方法
新做了服务器,cp覆盖时,无论加什么参数-f之类的还是提示是否覆盖,这在大量cp覆盖操作的时候是不能忍受的. 把a目录下的文件复制到b目录 cp –r a/* b 执行上面的命令时,b存在的每个文件都 ...
- [原创]java WEB学习笔记04:Servlet 简介及第一个Servlet程序(配置注册servlet,生命周期)
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- 基于socket实现上传文件
基于socket实现文件上传 客户端代码: #!/usr/bin/env python # -*- coding:utf-8 -*- """ 这个是实现上传文件 首先让客 ...
- vo优化总结
问题1:位姿估计用的ransac,只用了几个点,如果3d_2d点存在噪声,不行.优化:把这值当做初值,用非线性优化问题2:深度图有误差,深度过近或过远不行,有误差.而特征点往往在物体边缘处,深度测量值 ...
- 同一台电脑关于多个SSH KEY管理
运用shh -T -v git@github.com查看具体出错信息,再根据信息来调试 原文链接: http://yijiebuyi.com/blog/f18d38eb7cfee860c117d ...
- Windows- 改变cmd控制台默认显示编码
在中国的电脑会要求兼容gbk编码,所以微软进入中国市场也顺应中国的要求,其中最明显的就是在cmd上默认的显示就是GBK .当开发人员在运行一些有打印中文的程序时,由于编码采用国际兼容版本的utf_8等 ...