简单的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)));
<root>
<element1>value1</element1>
<element2>value2</element2>
<element3>value3</element3>
<element4>value4</element4>
</root>
华丽的分割线
一直想写一个关于应届毕业生刚踏入职场的感受吧,一直没有时间写,十一放假回家,一定要整理出来。有很多东西想说,毕业的不舍与遗憾、身份的转变、职场的感受,还有很多想说,未完待续....以上是关于简单的XML文档读取的主要内容,如果未能解决你的问题,请参考以下文章