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 ...
随机推荐
- shell中替换json中指定的值
在linux中部署软件的时候,有时会遇到用shell动态改动json格式的配置文件,比如一下rabbitmq.json文件: { "rabbitmq": { "ssl&q ...
- ionic添加scss
Setup Sass Automatically 在进行以下操作之前要确保node比较新,以便正确安装node-sass 或 改用cnpm install node-sass安装(淘宝源) $ ion ...
- border --- 透明边框
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 3.09课·········for循环
for循环:反复执行某段代码.for循环四要素:初始条件,循环条件,循环体,状态改变.for(初始条件;循环条件;状态改变){ 循环体} 若初始条件满足循环条件,则进入循环体,执行完循环体,跳回到状态 ...
- PAT 天梯赛 L2-012. 关于堆的判断 【Heap】【STL】
题目链接 https://www.patest.cn/contests/gplt/L2-012 思路 使用 STL 里面有关 Heap 的函数 std::make_heap将[start, end)范 ...
- Android系统篇之—-编写系统服务并且将其编译到系统源码中【转】
本文转载自:http://www.wjdiankong.cn/android%E7%B3%BB%E7%BB%9F%E7%AF%87%E4%B9%8B-%E7%BC%96%E5%86%99%E7%B3% ...
- 剑指offer——翻转单词顺序VS左旋转字符串
字符串的交换等,注意判断字符串的是否为NULL,以及判断边界等. #include <iostream> #include <string> using namespace s ...
- FOJ 2232 匈牙利算法找二分图最大匹配
题目链接 简单理解匈牙利算法 简单理解二分图 尽量让每一个随从击败一个对手且随从全部存活,关键是为每一个随从找对手(递归过程),"腾". #include<iostream& ...
- 用用OGRE1.74搭建游戏框架(转载)
用OGRE1.74搭建游戏框架(一) 新版的OGRE出来了,不知什么原因抛弃了CEGUI.国内的教程好像也更新比较少了,在官网上还是发现不少资料的,现在参考官网上的一些资料来搭建一个游戏的框架. 参考 ...
- 目标检测 — one-stage检测(二)
one-stage检测算法,其不需要region proposal阶段,直接产生物体的类别概率和位置坐标值,经过单次检测即可直接得到最终的检测结果,因此有着更快的检测速度,比较典型的算法如YOLO,S ...