简单的XML文档读取

Posted x_k

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简单的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文档读取的主要内容,如果未能解决你的问题,请参考以下文章

java中XML操作:xml与string互转读取XML文档节点及对XML节点增删改查

libxml的使用--读取xml

操作xml文档,将文档中的数据读取到内存中

WinForm中DataGridView对XML文件的读取

简单 XML - 处理节点中的冒号

使用C#进行XML文档读取