XML格式化及解析

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

1 <object>
2     <栏目>李树鹏</栏目>
3     <request_day>22</request_day>
4     <day>22</day>
5     <name>tttt</name>
6 </object>

XMLValueObject类的全部代码:

  1 import java.io.StringReader;
  2 import java.util.ArrayList;
  3 import java.util.LinkedHashMap;
  4 import java.util.List;
  5 import java.util.Map;
  6 import org.apache.commons.lang.StringUtils;
  7 import org.apache.log4j.Logger;
  8 import org.dom4j.Document;
  9 import org.dom4j.DocumentException;
 10 import org.dom4j.DocumentHelper;
 11 import org.dom4j.Element;
 12 import org.dom4j.io.SAXReader;
 13
 14 public class XMLValueObject implements java.io.Serializable {
 15
 16     private static final long serialVersionUID = -3163892375347045824L;
 17
 18     private static Logger logger = Logger.getLogger(XMLValueObject.class);
 19
 20     private Map<String, List<String>> map;
 21
 22     public XMLValueObject() {
 23         map = new LinkedHashMap<String, List<String>>();
 24     }
 25
 26     public void put(String key, String value) {
 27         if (value == null) {
 28             return;
 29         }
 30
 31         List<String> list = map.get(key);
 32         if (list == null) {
 33             list = new ArrayList<String>();
 34             map.put(key, list);
 35         }
 36         list.removeAll(list);
 37         list.add(value);
 38     }
 39
 40     public void put(String key, String[] values) {
 41         if (values == null || values.length == 0) {
 42             return;
 43         }
 44
 45         List<String> list = map.get(key);
 46         if (list == null) {
 47             list = new ArrayList<String>();
 48             map.put(key, list);
 49         }
 50         for (String value : values) {
 51             list.add(value);
 52         }
 53     }
 54
 55     public Object get(String key) {
 56         List<String> list = map.get(key);
 57         return list == null || list.isEmpty() ? null : list.get(0);
 58     }
 59
 60     public Object[] getArray(String key) {
 61         List<String> list = map.get(key);
 62         return list == null ? new String[0] : list.toArray(new String[0]);
 63     }
 64
 65     @SuppressWarnings("unchecked")
 66     public void fromXML(String xml) {
 67      try{
 68          if (StringUtils.isEmpty(xml)) {
 69              return;
 70          }
 71         StringReader in = new StringReader(xml);
 72         SAXReader reader = new SAXReader(false);
 73         Document doc = null;
 74         try {
 75             doc = reader.read(in);
 76         }
 77         catch (DocumentException e) {
 78             logger.error("Could not read XML[" + xml + "]", e);
 79         }
 80         finally {
 81             in.close();
 82         }
 83
 84         Element root = doc.getRootElement();
 85         List<Element> children = (List<Element>) root.elements();
 86         for (Element child : children) {
 87             put(child.getName(), child.getText());
 88         }
 89
 90      }catch(Exception e)
 91      {
 92          //System.out.print("错误"+e.getMessage()+":"+xml);
 93          e.printStackTrace();
 94      }
 95
 96     }
 97
 98     public String toXML() {
 99         Document doc = DocumentHelper.createDocument();
100         Element root = doc.addElement("object");
101         //root.addAttribute("class", XMLValueObject.class.getName());
102
103         for (Map.Entry<String, List<String>> entry : map.entrySet()) {
104             String key = entry.getKey();
105             List<String> list = entry.getValue();
106
107             for (String value : list) {
108                 Element child = root.addElement(key);
109                 child.addText(value);
110             }
111         }
112
113         return doc.asXML();
114     }
115
116     public Map<String, List<String>> getMap() {
117         return map;
118     }
119
120     public void setMap(Map<String, List<String>> map) {
121         this.map = map;
122     }
123 }

测试代码:

1 public static void main(String[] args) {
2         XMLValueObject vo = new XMLValueObject();
3         vo.fromXML("<object><栏目>李树鹏</栏目><request_day>22</request_day><day>22</day><name>tttt</name></object>");
4         System.out.println(vo.get("栏目"));
5         vo.put("temp", "1212");
6         System.out.println(vo.toXML());
7     }
时间: 2024-10-17 12:21:51

XML格式化及解析的相关文章

xml介绍 约束 解析

今天内容 1.xml介绍 2.xml约束 3.xml解析 以上内容可以看懂,理解 4.贪吃蛇(补充)------------------------------------------------ 1.xml xml:可扩展的标记语言. xml作用:用于存储与传输数据. xml与html区别 ? XML 不是 HTML 的替代.-----xml对应xlst 相当于css于html ? XML 和 HTML 为不同的目的而设计: ? XML 被设计为传输和存储数据,其焦点是数据的内容. ? HTM

安卓xml文档解析

2014-12-27   14:53:32 解析xml文档 用xml文档存储数据 1.获得文件的路径 1 File path = new File(Environment.getExternalStorageDirectory(), "persons.xml"); 2.建立文件输出流 1 FileInputStream fis = new FileInputStream(path); 3.获得xml文档解析器对象 1 XmlPullParser parser=Xml.newPullPa

xml语法、DTD约束xml、Schema约束xml、DOM解析xml

今日大纲 1.什么是xml.xml的作用 2.xml的语法 3.DTD约束xml 4.Schema约束xml 5.DOM解析xml 1.什么是xml.xml的作用 1.1.xml介绍 在前面学习的html语言,html是超文本标记语言,使用html语言规定好的标签来封装文本数据.而html使用的标签html语言规定好的,每个标签都有自己特定的功能. xml语言,可扩展的标记语言,这门语言它没有定义任何的标记,而标记是由使用者自己来定义,但是由于标签名称以及属性名称都由用户自己来命名,导致别人在使

jaxp解析XML之DOM解析

XML解析技术XML解析方式分为三种一种是DOM解析一种是SAX解析 DOM思想:将整个xml加载入内存,形成围挡对象,所有对xml操作都是对内存中节点对象进行,DOM是官方xml解析标准,同时支持解析其他各种语言 SAX解析方式的出现,因为DOM的解析方式需要对文档进行加载入内存,当文档较大的时候比较消耗资源,这时候就出现了SAX解析SAX思想:一边解析,一边处理,一边释放资源 在JDK6中又引入了另一种StAX解析方式是一种拉模式的xml解析方式,而SAX是一种推模式XML解析方式推模式由服

Android解析XML之SAX解析器

SAX(Simple API for XML)解析器是一种基于事件的解析器,它的核心是事件处理模式,主要是围绕着事件源以及事件处理器来工作的.当事件源产生事件后,调用事件处理器相应的处理方法,一个事件就可以得到处理.在事件源调用事件处理器中特定方法的时候,还要传递给事件处理器相应事件的状态信息,这样事件处理器才能够根据提供的事件信息来决定自己的行为. SAX解析器的优点是解析速度快,占用内存少.非常适合在Android移动设备中使用. SAX相关类及API DefaultHandler:是一个事

xml文件以及解析

1.创建一个xml文件 <?xml version="1.0" encoding="UTF-8"?> <!-- xml:是一个可扩展的标记语言 01.很像超文本标记语言(html) 02.xml文件着重保存或者传输数据,不专注显示 03.无需预编译 04.符合w3c标准 < : < > : > " : " ' : &apos; & : & <![CDATA[代码]]>

Xml二(解析思想)、

XML解析: * 解析xml可以做: * 如果xml作为配置文件:读取 * 如果xml作为传输文件:写,读 * xml解析思想: * DOM:将文档加载进内存,形成一颗dom树(document对象),将文档的各个组成部分封装为一些对象. * 优点:因为,在内存中会形成dom树,可以对dom树进行增删改查. * 缺点:dom树非常占内存,解析速度慢. Document Element Text Attribute Comment * SAX:逐行读取,基于事件驱动 * 优点:不占内存,速度快 *

xml序列化和解析

xml序列化和解析 XmlSerializer类的使用--XML序列化 首先获得一个XmlSerializer序列化对象 XmlSerializer serializer = new Xml.newSerializer(); 使用XmlSerializer生成一个XML文件: serializer.setOutput(aa.xml,"utf-8") serializer.startDocument("utf-8",true)//设置头文档serializer.sta

XML之pull解析

PULL是STAX的一个实现技术STAX是The Streaming API for XML的缩写,是一种利用拉模式解析XML文档的APISTAX通过提供一种基于世界迭代器的API让程序员控制xml文档的解析过程A安卓系统内置的PULL解析器也可以进行XML文件的解析Pull解析器是一个java的开源项目,既可以用于安卓,也可以用于javaEEpull解析器运行方式与SAX解析器相似,同样是基于事件驱动的,是由客户端的程序自己控制xml事件主动调用事件方法当要使用pull解析的方式开发javaE