XML文档读取
前辈叫我帮忙写一个简单的读取XML的工具类,不需要太复杂,一个根节点,一层子节点,无节点属性
package com.pro0729; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.util.LinkedHashMap; import java.util.Map; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; /** * @moudle: 读取简单XML文件工具类 * @version:v1.0 * @Description: <root> <element1>value1</element1> <element2>value2</element2> <element3>value3</element3> <element4>value4</element4> </root> * @author: xukai * @date: 2016年9月14日 上午11:12:36 * */ public class ReadSimpleXmlUtil { // 读取文件路径 public final static String XML_PATH = "C:/Users/hcc/Desktop/config.txt"; // 创建工厂 public static DocumentBuilderFactory factory; // 建造器 public static DocumentBuilder builder; // XML文档 public static Document doc; static { try { factory = DocumentBuilderFactory.newInstance(); builder = factory.newDocumentBuilder(); // 创建文件输入流,目标文件 InputStream fis = new FileInputStream(XML_PATH); doc = builder.parse(fis); } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { try { Map<String,String> map = readXml(); System.out.println(map); modifyXml("book","1003"); map = readXml(); System.out.println(map); } catch (Exception e) { e.printStackTrace(); } } /** * * <p>Title: 读取整个XML文档</p> * <p>author : xukai</p> * <p>date : 2016年9月14日 下午2:18:30</p> * @return Map<Key,Value> * @throws Exception */ public static Map<String,String> readXml() throws Exception { Map<String,String> map = new LinkedHashMap<String,String>(); // 获取文档的根节点 Element root = doc.getDocumentElement(); NodeList rootchilds = root.getChildNodes(); for (int j = 0; j < rootchilds.getLength(); j++) { // 判断当前节点是否为元素节点 if (rootchilds.item(j).getNodeType() == Node.ELEMENT_NODE) { Element ele = (Element) rootchilds.item(j); String name = ele.getNodeName(); // 获取第一个字节点的值 String value = ele.getTextContent(); map.put(name,value); } } return map; } /** * * <p>Title: 修改XML</p> * <p>author : xukai</p> * <p>date : 2016年9月14日 下午2:32:38</p> * @param 节点名 * @param 节点文本 * @throws Exception */ public static void modifyXml(String name,String value) throws Exception { NodeList nodeList = doc.getElementsByTagName(name); if (nodeList.getLength() == 0) { throw new RuntimeException("没有找到该节点"); } for (int j = 0; j < nodeList.getLength(); j++) { // 判断当前节点是否为元素节点 if (nodeList.item(j).getNodeType() == Node.ELEMENT_NODE) { Element ele = (Element) nodeList.item(j); ele.setTextContent(value); } } TransformerFactory factory = TransformerFactory.newInstance(); Transformer former = factory.newTransformer(); // 写出修改之后的document former.transform(new DOMSource(doc),new StreamResult(new File(XML_PATH))); } }
<root>
<element1>value1</element1>
<element2>value2</element2>
<element3>value3</element3>
<element4>value4</element4>
</root>
华丽的分割线
一直想写一个关于应届毕业生刚踏入职场的感受吧,一直没有时间写,十一放假回家,一定要整理出来。有很多东西想说,毕业的不舍与遗憾、身份的转变、职场的感受,还有很多想说,未完待续....