XML文件:

<?xml version="1.0" encoding="UTF-8"?>

<vrvscript>
<item ID="1021" isSelf="n"/>
<item ID="1023" isSelf="n"/>
<item ID="1003" isSelf="n"/>
<item ID="1020" isSelf="n"/>
<item ID="1022" isSelf="n"/>
</vrvscript>

修改属性值:要把每个item元素的“isSelf”属性值修改为“y”

// 获取XML
Document document = XMLUtil.getDocument(xmlPath);
Element root = document.getRootElement(); Iterator<?> ruleNodes = root.elementIterator("item");
while (ruleNodes.hasNext()) {
Element ruleElement = (Element) ruleNodes.next();
// 修改isSelf的属性值
Attribute isSelfAttr = ruleElement.attribute("isSelf");
isSelfAttr.setValue("n");
}
writeXml(document, xmlPath.getPath());
    /**
* 输出xml文件
*
* @param document
* @param filePath
* @throws IOException
*/
public static void writeXml(Document document, String filePath) throws IOException {
File xmlFile = new File(filePath);
XMLWriter writer = null;
try {
if (xmlFile.exists())
xmlFile.delete();
writer = new XMLWriter(new FileOutputStream(xmlFile), OutputFormat.createPrettyPrint());
writer.write(document);
writer.close();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (writer != null)
writer.close();
}
}

获取属性值:采用Element类的attributeValue方法

String policyName = root.attributeValue("PolicyName");

给XML元素增加属性

Element ruleElement = root.addElement("item");
ruleElement.addAttribute("ID", "1101");
ruleElement.addAttribute("isSelf", "y");

一些提供一个dom4j操作XML的工具类:

package com.vrv.paw.utils;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.Iterator;
import java.util.Map; import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter; /**
* 操作XML文件的工具类
*
* @author glw
*/
public class XMLUtil {
/**
* 得到XML文档
*
* @param xmlFile
* 文件名(路径)
* @return XML文档对象
* @throws DocumentException
*/
public static Document getDocument(String xmlFile) {
SAXReader reader = new SAXReader();
reader.setEncoding("UTF-8");
File file = new File(xmlFile);
try {
if (!file.exists()) {
return null;
} else {
return reader.read(file);
}
} catch (DocumentException e) {
throw new RuntimeException(e + "->指定文件【" + xmlFile + "】读取错误");
}
} /**
* 得到XML文档(编码格式-gb2312)
*
* @param xmlFile
* 文件名(路径)
* @return XML文档对象
* @throws DocumentException
*/
public static Document getDocument_gb2312(String xmlFile) {
SAXReader reader = new SAXReader();
reader.setEncoding("gb2312");
File file = new File(xmlFile);
try {
if (!file.exists()) {
return null;
} else {
return reader.read(file);
}
} catch (DocumentException e) {
throw new RuntimeException(e + "->指定文件【" + xmlFile + "】读取错误");
}
} public static String getText(Element element) {
try {
return element.getTextTrim();
} catch (Exception e) {
throw new RuntimeException(e + "->指定【" + element.getName() + "】节点读取错误");
} } /**
* 增加xml文件节点
*
* @param document
* xml文档
* @param elementName
* 要增加的元素名称
* @param attributeNames
* 要增加的元素属性
* @param attributeValues
* 要增加的元素属性值
*/
public static Document addElementByName(Document document, String elementName, Map<String, String> attrs, String cdata) {
try {
Element root = document.getRootElement();
Element subElement = root.addElement(elementName);
for (Map.Entry<String, String> attr : attrs.entrySet()) {
subElement.addAttribute(attr.getKey(), attr.getValue());
}
subElement.addCDATA(cdata);
} catch (Exception e) {
throw new RuntimeException(e + "->指定的【" + elementName + "】节点增加出现错误");
}
return document;
} /**
* 删除xml文件节点
*/
@SuppressWarnings("unchecked")
public static Document deleteElementByName(Document document, String elementName) {
Element root = document.getRootElement();
Iterator<Object> iterator = root.elementIterator("file");
while (iterator.hasNext()) {
Element element = (Element) iterator.next();
// 根据属性名获取属性值
Attribute attribute = element.attribute("name");
if (attribute.getValue().equals(elementName)) {
root.remove(element);
document.setRootElement(root);
break;
}
}
return document;
} /**
* 输出xml文件
*
* @param document
* @param filePath
* @throws IOException
*/
public static void writeXml(Document document, String filePath) throws IOException {
File xmlFile = new File(filePath);
XMLWriter writer = null;
try {
if (xmlFile.exists())
xmlFile.delete();
writer = new XMLWriter(new FileOutputStream(xmlFile), OutputFormat.createPrettyPrint());
writer.write(document);
writer.close();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (writer != null)
writer.close();
}
} /**
* 创建Document及根节点
*
* @param rootName
* @param attributeName
* @param attributeVaule
* @return
*/
public static Document createDocument(String rootName, String attributeName, String attributeVaule) {
Document document = null;
try {
document = DocumentHelper.createDocument();
Element root = document.addElement(rootName);
root.addAttribute(attributeName, attributeVaule);
} catch (Exception e) {
throw new RuntimeException(e + "->创建的【" + rootName + "】根节点出现错误");
}
return document;
} /**
* 删除xml文件节点
*/
@SuppressWarnings("unchecked")
public static Document deleteElementAddressByName(Document document, String elementName) {
Element root = document.getRootElement();
Iterator<Object> iterator = root.elementIterator("address");
while (iterator.hasNext()) {
Element element = (Element) iterator.next();
// 根据属性名获取属性值
Attribute attribute = element.attribute("name");
if (attribute.getValue().equals(elementName)) {
root.remove(element);
document.setRootElement(root);
break;
}
}
return document;
} /**
* 删除属性等于某个值的元素
* @param document XML文档
* @param xpath xpath路径表达式
* @param attrName 属性名
* @param attrValue 属性值
* @return
*/
@SuppressWarnings("unchecked")
public static Document deleteElementByAttribute(Document document, String xpath, String attrName, String attrValue) {
Iterator<Object> iterator = document.selectNodes(xpath).iterator();
while (iterator.hasNext()) {
Element element = (Element) iterator.next();
Element parentElement = element.getParent();
// 根据属性名获取属性值
Attribute attribute = element.attribute(attrName);
if (attribute.getValue().equals(attrValue)) {
parentElement.remove(element);
}
}
return document;
}
}

dom4j修改,获取,增加xml中某个元素的属性值的更多相关文章

  1. JAVA读取XML文件并解析获取元素、属性值、子元素信息

    JAVA读取XML文件并解析获取元素.属性值.子元素信息 关键字 XML读取  InputStream   DocumentBuilderFactory   Element     Node 前言 最 ...

  2. javaScript获取文档中所有元素节点的个数

    HTML+JS 代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu ...

  3. Java分享笔记:使用entrySet方法获取Map集合中的元素

    /*--------------------------------- 使用entrySet方法取出Map集合中的元素: ....该方法是将Map集合中key与value的关系存入到了Set集合中,这 ...

  4. 在js中获取页面元素的属性值时,弱类型导致的诡异事件踩坑记录,

    前几天写一个js的时候遇到一个非常诡异的事情,这个问题是这样的,我要获取一个页面的DOM元素的val值,判断这个值是否比某个变量大,这个需求原先数字最大也就是10,现在要改了,可能会更多,这个时候我发 ...

  5. tween.js是一款可生成平滑动画效果的js动画库。tween.js允许你以平滑的方式修改元素的属性值。它可以通过设置生成各种类似CSS3的动画效果。

    简要教程 tween.js是一款可生成平滑动画效果的js动画库.相关的动画库插件还有:snabbt.js 强大的jQuery动画库插件和Tweene-超级强大的jQuery动画代理插件. tween. ...

  6. JQuery中操作元素的属性_对象属性

    我们主要是通过attr去获取元素的属性: 看body内容: <body> <p> 账号:<input type="text" id="una ...

  7. (转载)读取xml中的指定节点的值

            /// <summary>         /// 读取xml中的指定节点的值        /// </summary>         private st ...

  8. 读取xml中的指定节点的值

    /// <summary> /// 读取xml中的指定节点的值 /// </summary> private string ReadXmlNode(string filenam ...

  9. CSS3中transform几个属性值的注意点

    transform(变形)是CSS3中的元素的属性,transform的属性值主要包括旋转rotate.扭曲skew.缩放scale和移动translate以及矩阵变形matrix 基本用法可以参考文 ...

随机推荐

  1. c语言编程之栈(链表实现)

    用链表实现栈,完成了出栈入栈功能. #include"stdio.h" typedef int element; //define a struct descirbe a stac ...

  2. WebClient

    Mircsoft在dotnet1.1框架下提供的向 URI 标识的资源发送数据和从 URI 标识的资源接收数据的公共方法.通过这个类,大家可以在脱离浏览器的基础上模拟浏览器对互联网上的资源的访问和发送 ...

  3. bnuoj 4208 Bubble sort

    http://www.bnuoj.com/bnuoj/problem_show.php?pid=4208 [题意]:如题,求冒泡排序遍历趟数 [题解]:这题开始2B了,先模拟TLE,然后想了一下,能不 ...

  4. asp.net中的mysql传参数MySqlParameter

    注意在asp.net中传参 string sql="select name,id from user where id=@id"; //@idm不需要引号 MySqlParamet ...

  5. linux消息队列的使用

    消息队列 *消息队列是内核地址空间中的内部链表,通过内核在各个进程之间传递的内容.消息顺序发送到消息队列中,每个消息队列都有IPC标识符唯一地进行标识. msgbuf结构 struct msgbuf{ ...

  6. 生成最小树prim算法

    最小生成树prim算法实现   ‘      ’最小生成树,就是权值(两点间直线的值)之和的最小值. 首先,要用二维数组记录点和权值.如上图所示无向图: int G[6][6];       G[1] ...

  7. 本地虚拟机中匿名ftp上传文件失败的问题

    在10.10.50.230中新建了一个匿名的ftp服务器,结果在10.10.50.241中上传文件时提示: local: README.txt remote: /var/ftp/pub/upload ...

  8. 【BZOJ】【1770】【Usaco2009 Nov】lights 灯

    高斯消元解XOR方程组 一眼看上去是高斯消元解xor方程组……但是不会写……sad 去膜拜了Hzwer和ZYF Hzwer啥也没说,还是zyf靠谱…… 当多解的时候就需要爆搜枚举自由元的情况,找最优解 ...

  9. ural 1869

    简单题 ~~ #include <cstdio> #include <cstring> #include <iostream> using namespace st ...

  10. Javascript中parentNode的用法

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...