简单的XML文档读取

前端之家收集整理的这篇文章主要介绍了简单的XML文档读取前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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)));
    }
 
}


XML文档的格式:

<root>
<element1>value1</element1>
<element2>value2</element2>
<element3>value3</element3>
<element4>value4</element4>
</root>

华丽的分割线

一直想写一个关于应届毕业生刚踏入职场的感受吧,一直没有时间写,十一放假回家,一定要整理出来。有很多东西想说,毕业的不舍与遗憾、身份的转变、职场的感受,还有很多想说,未完待续....

猜你在找的XML相关文章