1. 创建并写入XML

    public static void writeXML(String filename){
try {
Document document = DocumentHelper.createDocument();
Element root = document.addElement("PortConfig");
Element ePort; ePort = root.addElement("Port");
ePort.addAttribute("Portname", "portBloodpress");
ePort.addAttribute("Portnumber", "COM12"); ePort = root.addElement("Port");
ePort.addAttribute("Portname", "portWah");
ePort.addAttribute("Portnumber", "COM14"); ePort = root.addElement("Port");
ePort.addAttribute("Portname", "portBloodsugar");
ePort.addAttribute("Portnumber", "COM16"); ePort = root.addElement("Port");
ePort.addAttribute("Portname", "portBloodfat");
ePort.addAttribute("Portnumber", "COM18"); ePort = root.addElement("Port");
ePort.addAttribute("Portname", "portUric");
ePort.addAttribute("Portnumber", "COM20"); OutputFormat format = new OutputFormat(" ", true);
XMLWriter output = new XMLWriter(new FileWriter(new File(filename)), format);
output.write(document);
output.close(); } catch (Exception e) {
e.printStackTrace();
}
}

首先用DocumentHelper创建一个Document对象,然后给Document添加一个Element,也就是根Element;然后可以在这个根Element下面添加若干个Element,每一个Element用addAttribute()添加了属性名称和属性值;最后,使用XMLWriter把Document写入文件。

2. 读取并解析XML

    public static void readXML(String filename){

        try {
SAXReader saxReader = new SAXReader();
Document document = saxReader.read(filename);
// 获取根节点
Element portConfig = document.getRootElement();
for (Iterator i = portConfig.elementIterator(); i.hasNext();) {
Element port = (Element) i.next();
String aname = port.attributeValue("Portname");
String avalue = port.attributeValue("Portnumber");
if (aname.equals("portBloodpress")){
Constant.portBloodpress = avalue;
}
else if (aname.equals("portWah")){
Constant.portWah = avalue;
}
else if (aname.equals("portBloodsugar")){
Constant.portBloodsugar = avalue;
}
else if (aname.equals("portBloodfat")){
Constant.portBloodfat = avalue;
}
else if (aname.equals("portUric")){
Constant.portUric = avalue;
}
}
} catch (Exception e) {
e.printStackTrace();
} }

首先创建一个SAXReader,用这个SAXReader读出一个Document;然后获得这个Document的根Element,迭代获得根Element下面的每一个Element,对每一个Element,使用attributeValue()获得它的属性值。

3. 更新XML

    public static void updateXML(String filename){
try {
File f = new File(filename);
SAXReader saxReader = new SAXReader();
Document document = saxReader.read(curDir + "\\port_config.xml");
// 获取根节点
Element portConfig = document.getRootElement();
for (Iterator i = portConfig.elementIterator(); i.hasNext();) {
Element port = (Element) i.next();
String aname = port.attributeValue("Portname");
if (aname.equals("portBloodpress")){
port.setAttributeValue("Portnumber", Constant.portBloodpress);
}
else if (aname.equals("portWah")){
port.setAttributeValue("Portnumber", Constant.portWah);
}
else if (aname.equals("portBloodsugar")){
port.setAttributeValue("Portnumber", Constant.portBloodsugar);
}
else if (aname.equals("portBloodfat")){
port.setAttributeValue("Portnumber", Constant.portBloodfat);
}
else if (aname.equals("portUric")){
port.setAttributeValue("Portnumber", Constant.portUric);
}
}
XMLWriter output = new XMLWriter(new FileWriter(new File(curDir + "\\port_config.xml")));
output.write(document);
output.close();
} catch (Exception e) {
e.printStackTrace();
}
}

更新和读取的过程差不多,只是对需要更新的属性用setAttributeValue()方法更新,最后再用XMLWriter写入文件。

XML文件:

<?xml version="1.0" encoding="UTF-8"?>
<PortConfig>
<Port Portname="portBloodpress" Portnumber="COM126"/>
<Port Portname="portWah" Portnumber="COM146"/>
<Port Portname="portBloodsugar" Portnumber="COM166"/>
<Port Portname="portBloodfat" Portnumber="COM186"/>
<Port Portname="portUric" Portnumber="COM206"/>
</PortConfig>

Dom4j操作XML文件的更多相关文章

  1. 用dom4j操作xml文件

    XML的全称是eXtensible Markup Language,即“可扩展标记语言”.XML文件的作用主要是数据存储,文件配置,数据传输. html与xml的区别是:①html语法松散,xml语法 ...

  2. 使用dom4j对xml文件进行增删改查

    1.使用dom4j技术对dom_demo.xml进行增删改查 首选要下载dom4j的jar包 在官网上找不到,网上搜索了一下在这个链接:http://sourceforge.net/projects/ ...

  3. 【JAVA使用XPath、DOM4J解析XML文件,实现对XML文件的CRUD操作】

    一.简介 1.使用XPath可以快速精确定位指定的节点,以实现对XML文件的CRUD操作. 2.去网上下载一个“XPath帮助文档”,以便于查看语法等详细信息,最好是那种有很多实例的那种. 3.学习X ...

  4. Java操作XML文件 dom4j 篇

    在项目中,我们很多都用到了xml文件,无论是参数配置还是与其它系统的数据交互.今天就来讲一下Java 中使用dom4j来操作XML文件. 我们需要引入的包: //文件包 import java.io. ...

  5. Java使用DOM4J对XML文件进行增删改查操作

    Java进行XML文件操作,代码如下: package com.founder.mrp.util; import java.io.File; import java.util.ArrayList; i ...

  6. 用dom4j解析xml文件并执行增删改查操作

    转自:https://www.aliyun.com/jiaocheng/1339446.html xml文件: <?xml version="1.0" encoding=&q ...

  7. 【dom4j xml】使用dom4j处理XML文件--测试过程遇到的问题

    首先 关于dom4j的API,有如下: 当然  其中的实体引用有以下: 测试使用环境: 使用Maven搭建web环境,pom.xml文件配置如下: <project xmlns="ht ...

  8. 使用dom4j 读取XML文件

    第一次接触dom4j的时候,感觉这个东西很神秘,因为之前虽然知道XML文件吧,但从来没有用过,一直感觉XML肯定不好操作.当得知,dom4j可以很容易的操作读取XML文件时,不免有些好奇,那么,用do ...

  9. dom4j操作xml文档

    java Dom4j解析XML文件 标签(空格分隔):java进阶 xml文档: <?xml version="1.0" encoding="UTF-8" ...

随机推荐

  1. 【Java并发编程实战】-----“J.U.C”:Semaphore

    信号量Semaphore是一个控制访问多个共享资源的计数器,它本质上是一个"共享锁". Java并发提供了两种加锁模式:共享锁和独占锁.前面LZ介绍的ReentrantLock就是 ...

  2. C#编程模式之扩展命令

    C#编程模式之扩展命令 前言 根据上一篇的命令模式和在工作中遇到的一些实际情况,有了本篇文章,时时都是学习的一个过程,会在这个过程中发现许多好的模式或者是一种开发方式,今天写出来的就是我工作中常用到的 ...

  3. ios 避免循环引用

    类似网络请求的情况下会导致循环引用,但是 如果网络请求的对象是局部变量,就必须用self,不能用weakSelf,否则,一旦当前方法所在对象销毁,那weakSelf就为空了(如果目的是这样,那就另当别 ...

  4. xamarin UWP证书问题汇总

    打算开发一个软件使用rsa加密的东西,所以有用到数字证书这块,最近遇到些问题, 问题一:使用如下代码添加数字证书后,在证书管理器的当前用户和本地计算机下都找不到这张证书. using (X509Sto ...

  5. Objective-C 外观模式--简单介绍和使用

    外观模式(Facade),为子系统中的一组接口提供一个一致的界面,定义一个高层接口,这个接口使得这一子系统更加容易使用. 在以下情况下可以考虑使用外观模式: (1)设计初期阶段,应该有意识的将不同层分 ...

  6. JavaScript Json对象和Json对象字符串的关系 jsonObj<->JsonString

    JavaScript Json对象和Json对象字符串的关系 jsonObj<->JsonString 如下示例: 直接写的a1就是一个Json对象,a2 就是一个Json对象字符串; 通 ...

  7. java,H5微信蓝牙设备开发教程申请设备和添加设备(2)

    转载地址 http://www.vxzsk.com/76.html  申请设备功能 a. 登录公众平台,点击左边功能栏的"添加功能插件",选择"设备功能". b ...

  8. LINQ系列:Linq to Object转换操作符

    转换是指将输入对象的类型转变为序列的动作. 1. AsEnumerable AsEnumerable操作符将查询的输入以IEnumberable(T)类型返回. 2. Cast Cast操作符将IEn ...

  9. 【Win10 应用开发】OCR识别

    OCR,即Optical Character Recognition,光学字符识别.以下介绍来自搜索: OCR(Optical Character Recognition,光学字符识别)是指电子设备( ...

  10. 【原创】开源Math.NET基础数学类库使用(04)C#解析Matrix Marke数据格式

                   本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新  开源Math.NET基础数学类库使用总目录:[目录]开源Math.NET基础数学类库使用总目录 前言 ...