高效读取与修改XML文件
来源:互联网 发布:java 限制登录次数 编辑:程序博客网 时间:2024/05/19 15:25
XML范例文件(NewFile.xml):
<?xml version="1.0" encoding="UTF-8"?>
<root>
<toPhoneNumber>09876543219</toPhoneNumber>
<managerNumber>09876543219</managerNumber>
<smsStatus>false</smsStatus>
<telStatus>false</telStatus>
<connUrl>10.6.7.123:4321</connUrl>
</root>
主工具类:
import java.io.File;
import java.util.HashMap;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
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.Node;
import org.w3c.dom.NodeList;
public class XmlHandlerUtil{
//根据文件路径加载为Document对象
public static Document loadDocument(String filename){
Document document = null;
try{
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder=factory.newDocumentBuilder();
document=builder.parse(new File(filename));
document.normalize();
}catch (Exception e){
e.printStackTrace();
}
return document;
}
//修改xml内容
public static void updateXmlMethod(String filename,HashMap paramMap){
if(paramMap != null){
Document document = loadDocument(filename);
//获得xml根节点
Node root = document.getDocumentElement();
if(root.hasChildNodes()){
NodeList chlidrenNodes = root.getChildNodes();
String setValue = null;
//遍历根下所有节点
for (int i=0;i<chlidrenNodes.getLength();i++){
Node subnode = chlidrenNodes.item(i);
if (subnode.getNodeName()=="toPhoneNumber"){
setValue = (String)paramMap.get("toPhoneNumber");
}else if(subnode.getNodeName()=="managerNumber"){
setValue = (String)paramMap.get("managerNumber");
}else if(subnode.getNodeName()=="smsStatus"){
setValue = (String)paramMap.get("smsStatus");
}else if(subnode.getNodeName()=="telStatus"){
setValue = (String)paramMap.get("telStatus");
}else if(subnode.getNodeName()=="connUrl"){
setValue = (String)paramMap.get("connUrl");
}
if(setValue != null && !"".equals(setValue)){
subnode.getFirstChild().setNodeValue(setValue);
}
setValue = null;
}
}
doc2XmlFile(document,filename);
}
}
// 生成新的xml文件
public static boolean doc2XmlFile(Document document,String filename){
boolean flag = true;
try{
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();
DOMSource source = new DOMSource(document);
StreamResult result = new StreamResult(new File(filename));
transformer.transform(source, result);
}catch(Exception e){
flag = false;
e.printStackTrace();
}
return flag;
}
// 读取xml内容
public static void readXmlFile(String filename){
try{
ContentHandler handler = new ContentHandler();
SAXParserFactory saxparserfactory = SAXParserFactory.newInstance();
SAXParser saxparser = saxparserfactory.newSAXParser();
saxparser.parse(new File(filename), handler);
}catch(Exception ex){
ex.printStackTrace();
}
}
}
SAX解析类:
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
//事件xml解析类
public class ContentHandler extends DefaultHandler {
private String preElement = null;
@Override
public void characters(char[] ch, int start, int length) throws SAXException {
if("toPhoneNumber".equals(preElement)){
System.out.println(new String(ch,start,length));
}else if("managerNumber".equals(preElement)){
System.out.println(new String(ch,start,length));
}else if("smsStatus".equals(preElement)){
System.out.println(new String(ch,start,length));
}else if("telStatus".equals(preElement)){
System.out.println(new String(ch,start,length));
}else if("connUrl".equals(preElement)){
System.out.println(new String(ch,start,length));
}
}
@Override
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
preElement = qName;
}
@Override
public void endElement(String uri, String localName, String qName) throws SAXException {
preElement = null;
}
}
实用类:
import java.util.HashMap;
public class SAXUtil {
public static void main(String[] args) {
//修改
HashMap paramMap = new HashMap();
paramMap.put("toPhoneNumber", "09876543219");
paramMap.put("managerNumber", "09876543219");
paramMap.put("smsStatus", "false");
paramMap.put("telStatus", "false");
paramMap.put("connUrl", "10.6.7.123:4321");
XmlHandlerUtil.updateXmlMethod("NewFile.xml",paramMap);
//读取
XmlHandlerUtil.readXmlFile("NewFile.xml");
}
}
- 高效读取与修改XML文件
- C# 对XML文件的读取与修改
- 读取,添加,修改xml文件
- 读取,添加,修改xml文件
- 写入xml文件与读取xml文件
- properties文件读取与修改
- 读取与写入XML文件
- XML文件写入与读取
- c# 创建、读取、添加、修改xml文件
- c# 创建、读取、添加、修改xml文件
- JDOM创建、修改、删除、读取XML文件
- [libxml2]_[C/C++]_[高效读取XML大文件]
- XML配置文件的读取与修改
- XML配置文件的读取与修改
- C#读取与修改XML文档
- DOM解析与SAX解析来读取和修改xml文件
- php 高效读取文件
- python 高效读取文件
- oracle查询排序asc/desc 多列 order by
- SharePoint 2010 移除Ribbon菜单中的命令项
- 缓冲区溢出引起奇怪的bug
- sql2005中xml的操作
- 通讯-同步异步区别
- 高效读取与修改XML文件
- $(document).ready(function(){ })这个函数的意思
- Java正则表达式中各种字符以及转义字符的解释说明
- textView键盘遮挡问题
- 【翻译】如何对RadioButtonList, DropDownList, ListBox等ListItem控件使用RequiredFieldValidator
- 基于Flash/AIR的拼写检查引擎:Squiggly
- CHM 格式制作工具
- sql2005中xml的操作
- <s:iterator使用一