dom4j解析示例
收藏信息.xml
<?xml version="1.0" encoding="GB2312" standalone="no"?><PhoneInfo>
<Brand id="" name="华为">
<Type name="U8650"/>
<Type name="HW123"/>
<Type name="HW321"/>
</Brand>
<Brand id="" name="苹果">
<Type name="iPhone4"/>
</Brand>
<Brand id="" name="三星"><type name="s120"/></Brand></PhoneInfo>
解析示例:
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Iterator; 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 Dom4jParse {
public static Document document; //获取DOM
public static void getDom(){
SAXReader saxReader = new SAXReader();
try {
document = saxReader.read(new File("收藏信息.xml"));
} catch (DocumentException e) {
e.printStackTrace();
} } //获取所有节点信息
public static void showInfo(){
Element root = document.getRootElement();
for(Iterator itBrand=root.elementIterator();itBrand.hasNext();){
Element brand = (Element) itBrand.next();
System.out.println("品牌"+brand.attributeValue("name"));
for(Iterator itType=brand.elementIterator();itType.hasNext();){
Element type = (Element) itType.next();
System.out.println("\t型号"+type.attributeValue("name"));
}
} } //添加节点
public static void addNode(){
Element root = document.getRootElement();
Element eBrand = root.addElement("Brand");
eBrand.addAttribute("name", "诺基亚");
Element eType = eBrand.addElement("type");
eType.addAttribute("name", "直板");
saveXml("收藏信息.xml");
} //更新节点,添加ID属性
public static void updateNode(){
Element root = document.getRootElement();
int id=0;
for(Iterator iBrand=root.elementIterator();iBrand.hasNext();){
Element brand = (Element)iBrand.next();
id++;
brand.addAttribute("id", id+"");
}
saveXml("收藏信息.xml");
} //删除节点
public static void deleteNode(){
Element root = document.getRootElement();
for(Iterator iBrand=root.elementIterator();iBrand.hasNext();){
Element brand = (Element)iBrand.next();
if(brand.attributeValue("name").equals("诺基亚")){
brand.getParent().remove(brand);
}
}
saveXml("收藏信息.xml");
} //保存XML
public static void saveXml(String path){
//输出格式转换器
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("GBK2312");
XMLWriter writer;
try {
writer = new XMLWriter(new FileWriter(path), format);
writer.write(document);
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
} public static void main(String[] args) {
Dom4jParse dp = new Dom4jParse();
dp.getDom();
dp.showInfo(); } }
dom4j解析示例的更多相关文章
- java中采用dom4j解析xml文件
一.前言 在最近的开发中用到了dom4j来解析xml文件,以前听说过来解析xml文件的几种标准方式:但是从来的没有应用过来,所以可以在google中搜索dmo4j解析xml文件的方式,学习一下dom4 ...
- 转:在java中使用dom4j解析xml
JAVA 使用Dom4j 解析XML Java DOM4J Parser - Parse XML Document Dom4j下载及使用Dom4j读写XML简介 在java中使用dom4j解析xml ...
- 【收藏用】--切勿转载JAVA 使用Dom4j 解析XML
原帖地址 : http://blog.csdn.NET/yyywyr/article/details/38359049 解析XML的方式有很多,本文介绍使用dom4j解析xml. 1.环境准备 (1) ...
- DOM4J解析XML文档
Tip:DOM4J解析XML文档 Dom4j是一个简单.灵活的开放源代码的库.Dom4j是由早期开发JDOM的人分离出来而后独立开发的.与JDOM不同的是,dom4j使用接口和抽象基类,虽然Dom4j ...
- dom4j解析xml文档全面介绍
一.dom4j介绍 dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的.dom4j是一个非常非常优秀的Java XML API,具有性能优异.功能强大和极端易用使用的特点, ...
- 源生API解析XML文档与dom4j解析XML文档
一.XML语言 XML是一种可扩展的标记语言,是一种强类型的语言,类似HTML(超文本标记语言,是一种弱类型的语言).XML是一种通用的数据交换格式(关系型数据库),综上所诉:XML可以传输数据,也可 ...
- XML概念定义以及如何定义xml文件编写约束条件java解析xml DTD XML Schema JAXP java xml解析 dom4j 解析 xpath dom sax
本文主要涉及:xml概念描述,xml的约束文件,dtd,xsd文件的定义使用,如何在xml中引用xsd文件,如何使用java解析xml,解析xml方式dom sax,dom4j解析xml文件 XML来 ...
- dom4j解析xml字符串实例
DOM4J 与利用DOM.SAX.JAXP机制来解析xml相比,DOM4J 表现更优秀,具有性能优异.功能强大和极端易用使用的特点,只要懂得DOM基本概念,就可以通过dom4j的api文档来解析xml ...
- XML 解析之 dom4j 解析器
dom4j 的使用需要导入 jar 包, 包括: dom4j-1.6.1 和 jaxen-1.1-beta 步骤: 在项目目录下,"Folder" 创建一个 lib 文件夹 复制 ...
随机推荐
- Linux学习之四--Nginx
关于Nginx的 nginx的是一个高性能的Web服务器的软件.它比Apache HTTP服务器更加灵活,重量轻的程序. 本教程将教你如何安装和你的CentOS 7服务器上启动Nginx的. 先决 ...
- react+redux官方实例TODO从最简单的入门(3)-- 删
上一篇文章我们实现了增删改查中<增>这个功能 那么这一篇我们将实现第二个功能,删! 首先增加一个状态: actions中增加对应的约定 到reducer里面设置执行的函数(这里todo.i ...
- AM335x kernel4.4.12 LCD 时钟翻转设置记录
TI AM335x kernel 4.4.12 LCD display 时钟翻转记录 因为公司硬件上已经确定LCD 转LVDS 转换芯片上确认以上升沿时钟为基准,所以只能在软件上调整相关东西. 入口在 ...
- typeScence
- 55. 2种方法求字符串的组合[string combination]
[本文链接] http://www.cnblogs.com/hellogiser/p/string-combination.html [题目] 题目:输入一个字符串,输出该字符串中字符的所有组合.举个 ...
- springMVC接受JSON异常
在springMVC 使用@RequestBody接受Json总是报如下错误: HTTP Status 500 - Handler processing failed; nested exceptio ...
- Android 获得AndroidManifest文件里自定义的meta标签内容
try { ApplicationInfo appInfo= this.getPackageManager().getApplicationInfo(getPackageName(),PackageM ...
- MAC上向GitHub上上传自己的项目
1首先需要在github上创建你自己的github账户 2新建仓库(注意选择initialize this repository with a README) 3生成ssh(公钥.pub&私钥 ...
- jQuery根据name取input值问题
最近做项目用$("input[name=inputName]").val();去取input值得时候发现取值有问题:总是取第一次输入的值,如果在同一个页面不发生表单提交,然后将in ...
- Android导包导致java.lang.NoClassDefFoundError
摘要: SDK方法总数是不能超过65k的.是否也引入其他的三方库,导致总数超过限制.超出限制会导致部分class找不到,引发java.lang.NoClassDefFoundError.解决方法:近日 ...