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 基本用法可以参考文 ...
随机推荐
- JS实现刷新iframe的方法
<iframe src="1.htm" name="ifrmname" id="ifrmid"></iframe> ...
- ruby 格式化当前日期时间
ruby 格式化当前日期时间 ruby 用Time类获取当前时间. t = Time.new puts t 可以看到输出的是(我现在运行的时间): Sat Jan 29 10:45:22 +0800 ...
- android studio 中设置apk的版本号
今天在mainfest.xml中设置版本号为2,(代码获取到的版本号无效) android:versionCode="2" android:versionName="2. ...
- 2433: [Noi2011]智能车比赛 - BZOJ
Description 新一届智能车大赛在JL大学开始啦!比赛赛道可以看作是由n个矩形区域拼接而成(如下图所示),每个矩形的边都平行于坐标轴,第i个矩形区域的左下角和右上角坐标分别为(xi,1,yi, ...
- IntelliJ IDEA 文件夹重命名--解决重命名后js文件引用找不到路径报404错误
情景: 说明:ExtJS是我后来的改的名字--原来叫extjs,可是当我把在页面的引用地址改为 src="ExtJS/.."后页面就报404错误,我把它改回之前的extjs就可以( ...
- Oracle数据库表的备份和数据表的删除操作
--Oracle数据库中的表备份: --备份语句:在备份之后就可以将这张表的所有数据源删除了,但是之后有人对这张表的数据进行操作,但是在操作完成之后要记得将数据表恢复 CREATE TABLE DZH ...
- Matlab实现二进制矩阵转换为十进制
一.问题描述 [1 1 1 0 1 0 1 1 0 1 0 0 1 1 0] 每两位3转换为一个十进制数,共5列,那么转换后是ceil(5/3)=2列. [7 1 6 1 1 2] 二.问题分析 1. ...
- 本地不安装oracle-client,使用pl/sql developer连接数据库
一.问题描述 本地未安装oracle-client端,由于机器资源有限,希望通过pl/sql developer进行远程数据库连接.单纯的安装pl/sql developer无法远程连接数据库. 二. ...
- 在线最优化求解(Online Optimization)之二:截断梯度法(TG)
在线最优化求解(Online Optimization)之二:截断梯度法(TG) 在预备篇中我们做了一些热身,并且介绍了L1正则化在Online模式下也不能产生较好的稀疏性,而稀疏性对于高维特征向量以 ...
- Introduction To Monte Carlo Methods
Introduction To Monte Carlo Methods I’m going to keep this tutorial light on math, because the goal ...