XML格式化及解析
2024-08-24 05:26:31
XML格式化工具:notepad++ 下载地址 http://rj.baidu.com/soft/detail/13478.html?ald 一个教程地址:http://jingyan.baidu.com/album/4b07be3c69172648b380f383.html
一个很好的notepad教程地址: http://www.crifan.com/files/doc/docbook/rec_soft_npp/release/htmls/npp_func_add_comment.html
一个解析xml 成map的简单的工具类,只支持如下如下格式化的xml
<object>
<栏目>李树鹏</栏目>
<request_day>22</request_day>
<day>22</day>
<name>tttt</name>
</object>
XMLValueObject类的全部代码:
import java.io.StringReader;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.SAXReader; public class XMLValueObject implements java.io.Serializable { private static final long serialVersionUID = -3163892375347045824L; private static Logger logger = Logger.getLogger(XMLValueObject.class); private Map<String, List<String>> map; public XMLValueObject() {
map = new LinkedHashMap<String, List<String>>();
} public void put(String key, String value) {
if (value == null) {
return;
} List<String> list = map.get(key);
if (list == null) {
list = new ArrayList<String>();
map.put(key, list);
}
list.removeAll(list);
list.add(value);
} public void put(String key, String[] values) {
if (values == null || values.length == 0) {
return;
} List<String> list = map.get(key);
if (list == null) {
list = new ArrayList<String>();
map.put(key, list);
}
for (String value : values) {
list.add(value);
}
} public Object get(String key) {
List<String> list = map.get(key);
return list == null || list.isEmpty() ? null : list.get(0);
} public Object[] getArray(String key) {
List<String> list = map.get(key);
return list == null ? new String[0] : list.toArray(new String[0]);
} @SuppressWarnings("unchecked")
public void fromXML(String xml) {
try{
if (StringUtils.isEmpty(xml)) {
return;
}
StringReader in = new StringReader(xml);
SAXReader reader = new SAXReader(false);
Document doc = null;
try {
doc = reader.read(in);
}
catch (DocumentException e) {
logger.error("Could not read XML[" + xml + "]", e);
}
finally {
in.close();
} Element root = doc.getRootElement();
List<Element> children = (List<Element>) root.elements();
for (Element child : children) {
put(child.getName(), child.getText());
} }catch(Exception e)
{
//System.out.print("错误"+e.getMessage()+":"+xml);
e.printStackTrace();
} } public String toXML() {
Document doc = DocumentHelper.createDocument();
Element root = doc.addElement("object");
//root.addAttribute("class", XMLValueObject.class.getName()); for (Map.Entry<String, List<String>> entry : map.entrySet()) {
String key = entry.getKey();
List<String> list = entry.getValue(); for (String value : list) {
Element child = root.addElement(key);
child.addText(value);
}
} return doc.asXML();
} public Map<String, List<String>> getMap() {
return map;
} public void setMap(Map<String, List<String>> map) {
this.map = map;
}
}
测试代码:
public static void main(String[] args) {
XMLValueObject vo = new XMLValueObject();
vo.fromXML("<object><栏目>李树鹏</栏目><request_day>22</request_day><day>22</day><name>tttt</name></object>");
System.out.println(vo.get("栏目"));
vo.put("temp", "1212");
System.out.println(vo.toXML());
}
最新文章
- 小白挑战:AsyncTask源码分析
- javascript基础二数据类型
- ycm添加自定义补全路径
- express 框架之 路由与中间件
- 导出excel和PDF小结 vba
- MySQL基础之第15章 MySQL用户管理
- java文件过滤器
- javascrip笔记——图片加载
- http 需要掌握的知识点(一)
- Font Awesome 4.0.3 提供了369个网页常用的矢量字体图标
- Apple Catching(dp)
- eclipse安装Veloeclipse(Velocity编辑插件)
- redis客户端连接服务端the version of redis server is too low to support this function错误
- Java接口实现传参
- 20164304姜奥——Exp1 PC平台逆向破解
- LeetCode(81): 搜索旋转排序数组 II
- TFS 安装遇到的问题
- bzoj 2216 [Poi2011]Lightning Conductor——单调队列+二分处理决策单调性
- HTML5 css3 阴影效果
- C# CLR20R3 程序终止的几种解决方案
热门文章
- 【转载】最长回文字符串(manacher算法)
- Leetcode 653. 两数之和 IV - 输入 BST
- [KMP][BZOJ1355][Baltic2009]Radio Transmission
- vue 组件间数据传递
- python基础之模块part1
- python读取文件
- 【Linux命令】删除大文件后磁盘空间未释放问题
- pytorch版本问题:AttributeError: &#39;module&#39; object has no attribute &#39;_rebuild_tensor_v2&#39;
- html &; email template
- RabbitMQ-Java客户端API指南-上