dom4j修改,获取,增加xml中某个元素的属性值
2017-10-20 08:12
711 查看
来源:http://www.cnblogs.com/liaojie970/p/5386138.html
修改属性值:要把每个item元素的“isSelf”属性值修改为“y”
获取属性值:采用Element类的attributeValue方法
给XML元素增加属性
一些提供一个dom4j操作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中某个元素的属性值
- dom4j修改,获取,增加xml中某个元素的属性值
- LINQ To XML:获取,修改,增加,删除元素的属性
- dom4j学习笔记[3]---获取、修改XML元素
- Asp.net中C#增加删除查找与修改xml文件元素节点
- tinyxml使用:创建XML,遍历打印xml文件 select操作,获取单个节点值,删除节点操作,修改节点操作,增加节点操作
- 利用dom4j学习xml(三) 修改子节点的属性值
- LinqToXML添加 XML元素 及修改属性值
- Jquery获取和修改dom元素的属性值
- DOM4J实现XMl的增加,删除,修改,查询
- dom4j解析xml获取attribute属性值
- SQL Server 2005 XML 操作总结(五)元素(节点)操作——修改、删除、移动、遍历操作
- 获取、增加、修改、删除sqlserver字段描述
- c#对xml多属性节点的增加,删除,修改操作源码
- xml文档节点的获取--dom4j的延伸xpath知识
- dom4j解析xml的增加信息
- Selenium2学习-028-WebUI自动化实战实例-026-获取页面元素值或者元素属性值
- dom4j之创建xml、读取xml、修改xml
- jQuery 修改CSS样式 与 attr方法-获得修改元素属性值
- JQUERY 获取当前焦点对象属性, jquery attr()方法 添加,修改,获取对象的属性值。