java中XML操作:xml与string互转、读取XML文档节点及对XML节点增删改查

时间:2023-01-25 09:15:03

一、XML和String互转:

  使用dom4j程式变得很简单

//字符串转XML
String xmlStr = \"......\";
Document document = DocumentHelper.parseText(xmlStr); // XML转字符串
Document document = ...;
String text = document.asXML();
//这里的XML DOCUMENT为org.dom4j.Document

二、读取XML文档节点:

package vastsum;

import java.io.File;
import java.util.Iterator;
import java.util.List; import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.SAXReader; /**
* 读取下xml文档,获得document对象。
*/
class exmple {
public static void main(String[] args) throws DocumentException
{
SAXReader reader = new SAXReader();
Document document = reader.read(new File("./src/contact.xml")); /**
* 节点对象的操作方法
*/ //获取文档根节点
Element root = document.getRootElement();
//输出根标签的名字
System.out.println(root.getName()); //获取根节点下面的所有子节点(不包过子节点的子节点)
List<Element> list = root.elements() ;
//遍历List的方法
for (Element e:list){
System.out.println(e.getName());
} //获得指定节点下面的子节点
Element contactElem = root.element("contact");//首先要知道自己要操作的节点。
List<Element> contactList = contactElem.elements();
for (Element e:contactList){
System.out.println(e.getName());
} //调用下面获取子节点的递归函数。
getChildNodes(root); //获得当前标签下指定名称的第一个子标签
Element conElem = root.element("contact");
System.out.println(conElem.getName()); //获得更深层次的标签(一层一层的获取)
Element nameElem = root.element("contact").element("name");
System.out.println(nameElem.getName());
} //递归查询节点函数,输出节点名称
private static void getChildNodes(Element elem){
System.out.println(elem.getName());
Iterator<Node> it = elem.nodeIterator();
while (it.hasNext()){
Node node = it.next();
if (node instanceof Element){
Element e1 = (Element)node;
getChildNodes(e1);
}
}
}
}

三、对XML节点属性进行增删改查

package vastsum;

import java.io.File;
import java.io.FileWriter;
import java.util.Iterator; import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import org.junit.Test; /**
* 使用dom4j操作xml
* 对xml属性操作
* 操作xml文件为contact.xml
*
*/
public class attrDemo{
@Test
public void exmple() throws Exception{
//读取XML文件,获得document对象
SAXReader reader = new SAXReader();
Document document = reader.read(new File("./src/contact.xml")); //获得某个节点的属性对象
Element rootElem = document.getRootElement();
//获取根节点属性对象
Attribute rootAttr = rootElem.attribute("id"); //获取指定节点属性对象
Element contactElem = rootElem.element("contact");
Attribute contactAttr = contactElem.attribute("id"); //获取指定对象的属性名
System.out.println(rootAttr.getName());
System.out.println(contactAttr.getName()); //获取指定对象的属性值
System.out.println(contactAttr.getValue());
System.out.println(rootAttr.getValue()); //遍历某个节点的所有属性
for (Iterator it = contactElem.attributeIterator();it.hasNext();){
Attribute conAttr= (Attribute)it.next();
String conTxt = conAttr.getValue();
String conAttrName = conAttr.getName();
System.out.println(conAttrName+" = "+conTxt);
} //设置某节点的属性和值
contactElem.addAttribute("name", "zhangsan"); //设置(更改)某属性的值
Attribute nameAttr = contactElem.attribute("name");
nameAttr.setValue("lisi"); //删除某节点的指定属性
contactElem.remove(nameAttr); //将某节点的属性和值写入xml文档中
XMLWriter writer = new XMLWriter(new FileWriter("./src/contact.xml"));
writer.write(document);
writer.close(); //如果文档中有中文需要设置字符编码,用如下语句:
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("GBK");
XMLWriter writer = new XMLWriter(new FileWriter("./src/contact.xml"),format);
}
}

下面介绍下dom4j:

  dom4j是Java的XML API,用来读写XML文件的。目前有很多场景中使用dom4j来读写xml的。

  要使用dom4j开发,需要下载导入dom4j相应的jar文件。官网下载:http://www.dom4j.org/dom4j-1.6.1/

  下载解压之后如图所示:

java中XML操作:xml与string互转、读取XML文档节点及对XML节点增删改查

  我们只需要把dom4j-1.6.1.jar文件构建到我们开发项目中就可以了。

java中XML操作:xml与string互转、读取XML文档节点及对XML节点增删改查

  在项目中创建一个lib文件,把dom4j-1.6.1.jar文件拷贝到lib中,然后右键dom4j-1.6.1jar文件。如图所示:

java中XML操作:xml与string互转、读取XML文档节点及对XML节点增删改查
  点击Add to Bulid Path即可构建到项目中去了。导入成功如图所示:

java中XML操作:xml与string互转、读取XML文档节点及对XML节点增删改查

java中XML操作:xml与string互转、读取XML文档节点及对XML节点增删改查的更多相关文章

  1. Java Maven:spring boot &plus; Mybatis连接MySQL,通用mapper的增删改查,映射实现多表查询

    1. MySQL自带库test添加表user.role 角色表role 用户表user 2. 添加依赖,配置属性 相关依赖:百度即可,此处略 application.properties spring ...

  2. 告别无止境的增删改查--Java代码生成器

    转自:http://www.cnblogs.com/zhuYears/archive/2012/02/29/2373491.html 告别无止境的增删改查--Java代码生成器 有感于马上要做个比较大 ...

  3. 学习MyBatis必知必会(5)~了解myBatis的作用域和生命周期并抽取工具类MyBatisUtil、mybatis执行增删改查操作

    一.了解myBatis的作用域和生命周期[错误的使用会导致非常严重的并发问题] (1)SqlSessionFactoryBuilder [ 作用:仅仅是用来创建SqlSessionFactory,作用 ...

  4. Java 使用控制台操作实现数据库的增删改查

    使用控制台进行数据库增删改查操作,首先创建一个Java Bean类,实现基础数据的构造,Get,Set方法的实现,减少代码重复性. 基本属性为 学生学号 Id, 学生姓名 Name,学生性别 Sex, ...

  5. 数据库中简单的增删改查(CRUD)

    一切都是基于数据,而对数据的管理都离不开数据库.最近学到数据库的简单操作,所以写下这篇文章,总结一下学习到的知识.浅陋之处,多多见谅. 补充一下:一直弄不清SQL Server,Mysql ,以及Or ...

  6. java中用jdom创建xml文档&sol;将数据写入XML中

    import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; i ...

  7. 我来讲讲在c&num;中怎么进行xml文件操作吧,主要是讲解增删改查!

    我把我写的四种方法代码贴上来吧,照着写没啥问题. 注: <bookstore> <book> <Id>1</Id> <tate>2010-1 ...

  8. Java对XML文档的增删改查

    JAVA增删改查XML文件   最近总是需要进行xml的相关操作. 不免的要进行xml的读取修改等,于是上网搜索,加上自己的小改动,整合了下xml的常用操作. 读取XML配置文件 首先我们需要通过Do ...

  9. 使用DOM进行xml文档的crud(增删改查)操作&lt&semi;操作详解&gt&semi;

    很多朋友对DOM有感冒,这里我花了一些时间写了一个小小的教程,这个能看懂,会操作了,我相信基于DOM的其它API(如JDOM,DOM4J等)一般不会有什么问题. 后附java代码,也可以下载(可点击这 ...

随机推荐

  1. java系列-使用maven创建web项目(二)

    推荐2个maven找jar包配置的网站,只需要搜索关键字即可找到需要的Jar包,非常方便,比如:MySQL就可以找到mysql-connect-Java.jar. http://search.mave ...

  2. android 自动调整屏幕分辨率

    请看 http://blog.csdn.net/awp258/article/details/7593340

  3. Win7&comma;8的上帝模式文件夹 GodMode&period;&lbrace;ED7BA470-8E54-465E-825C-99712043E01C&rcub;

    新建一文件夹,命名为:“GodMode.{ED7BA470-8E54-465E-825C-99712043E01C}”, 创建后双击进入,可以看到计算机所有的配置选项信息.

  4. 企业IT资产管理功能大全

  5. 大快hadoop安装包下载与平台监控参数说明

    前阶段用了差不多两周的时间把DKhadoop的运行环境搭建以及安装的各个操作都介绍了一遍.关于DKhadoop安装包下载也只是顺带说了一下,但好像大快搜索的服务器在更新,新的下载页面还不好用!有好些朋 ...

  6. web百度地图离线开发

    公司现在做的一个项目本来用的是google离线地图,但是发现谷歌的地图数据很久没更新数据了,中国的城市发展这么快,好多地方地图和现实都对不上了. 发现百度地图数据更新挺快的(呵呵,毕竟是国产的吗),最 ...

  7. &lpar;windows下的&rpar;Apache无法启动解决 the requested operation has failed

     以下文章是转载别人的,这里只做学习用 ============================================================================== ...

  8. webpack 引入jquery和第三方jquery插件

    1.引入jquery jQuery 直接在 html 中引入,然后在 webpack 中把它配置为全局即可. index.html: <!DOCTYPE html> <html&gt ...

  9. linux&lpar;ubuntu&rpar; 查看系统设备信息

    ubuntu查看版本命令 方法一: 在终端中执行下列指令: cat /etc/issue 方法二: 使用 lsb_release 命令也可以查看 Ubuntu 的版本号,与方法一相比,内容更为详细. ...

  10. ngBind &lbrace;&lbrace;&rcub;&rcub; ngBindTemplate

    1.首先我们最常使用的一个绑定表达式的指令是ngBind,比如在一个div标签中我们可以这样使用: <div ng-bind="vm.info"></div&gt ...