dom4j修改,获取,增加xml中某个元素的属性值
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中某个元素的属性值的更多相关文章
- JAVA读取XML文件并解析获取元素、属性值、子元素信息
JAVA读取XML文件并解析获取元素.属性值.子元素信息 关键字 XML读取 InputStream DocumentBuilderFactory Element Node 前言 最 ...
- javaScript获取文档中所有元素节点的个数
HTML+JS 代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu ...
- Java分享笔记:使用entrySet方法获取Map集合中的元素
/*--------------------------------- 使用entrySet方法取出Map集合中的元素: ....该方法是将Map集合中key与value的关系存入到了Set集合中,这 ...
- 在js中获取页面元素的属性值时,弱类型导致的诡异事件踩坑记录,
前几天写一个js的时候遇到一个非常诡异的事情,这个问题是这样的,我要获取一个页面的DOM元素的val值,判断这个值是否比某个变量大,这个需求原先数字最大也就是10,现在要改了,可能会更多,这个时候我发 ...
- tween.js是一款可生成平滑动画效果的js动画库。tween.js允许你以平滑的方式修改元素的属性值。它可以通过设置生成各种类似CSS3的动画效果。
简要教程 tween.js是一款可生成平滑动画效果的js动画库.相关的动画库插件还有:snabbt.js 强大的jQuery动画库插件和Tweene-超级强大的jQuery动画代理插件. tween. ...
- JQuery中操作元素的属性_对象属性
我们主要是通过attr去获取元素的属性: 看body内容: <body> <p> 账号:<input type="text" id="una ...
- (转载)读取xml中的指定节点的值
/// <summary> /// 读取xml中的指定节点的值 /// </summary> private st ...
- 读取xml中的指定节点的值
/// <summary> /// 读取xml中的指定节点的值 /// </summary> private string ReadXmlNode(string filenam ...
- CSS3中transform几个属性值的注意点
transform(变形)是CSS3中的元素的属性,transform的属性值主要包括旋转rotate.扭曲skew.缩放scale和移动translate以及矩阵变形matrix 基本用法可以参考文 ...
随机推荐
- Careercup - Facebook面试题 - 6299074475065344
2014-05-01 01:00 题目链接 原题: Given a matrix with 's. What is the maximum area of the rectangle. In . Ho ...
- Netty4.x中文教程系列(四) 对象传输
Netty4.x中文教程系列(四) 对象传输 我们在使用netty的过程中肯定会遇到传输对象的情况,Netty4通过ObjectEncoder和ObjectDecoder来支持. 首先我们定义一个U ...
- 使用maven多模块来构建系统时,spring初始化报错的问题
最近在实验maven结构的maven工程时,碰到一个问题,springbean总是初始化失败: Related cause: org.springframework.beans.factory.Uns ...
- [设计模式] 3 创建者模式 builder
转载http://blog.csdn.net/wuzhekai1985/article/details/6667467 建造者模式的定义将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不 ...
- 01-03-02-2【Nhibernate (版本3.3.1.4000) 出入江湖】CRUP操作-Save方法的一些问题
此文由于当时不知道NHibernate的Sava方法不是更新操作,不知道Save就是Add,造成如下荒唐的求证过程,但结论是对的 ,可报废此文,特此声明. NHibernate--Save方法: Cu ...
- uva 11375
思路是刘书上的 但是个高精度 java 大数 ~~ import java.util.*; import java.io.*; import java.math.BigInteger; public ...
- httpClient 入门实例
import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.Unsu ...
- Unity3D与iOS的交互设计<ViewController 的跳转>
原地址:http://www.aichengxu.com/article/%CF%B5%CD%B3%D3%C5%BB%AF/28797_12.html Unity3D与iOS的交互设计<View ...
- **【ci框架】PHP的CI框架集成Smarty的最佳方式
因为CI自带的模板功能不是很方便,所以大家普遍采用集成Smarty的方式来弥补CI这方面的不足. 本人在网上看了不少CI集成Smarty的教程,包括咱们CI论坛里面的一个精华帖子 http://cod ...
- cast——java类型转换
以下例说之: byte b = 3; //??? 3是一个int常量,但是会自动判断3是不是在byte类型的范围内 b = b + 2; //Type mismatch: cannot convert ...