隨筆-35  評論-97  文章-0  trackbacks-0

          使用xml格式字符串轉載數據和卸載數據,在數據傳送時可以使用,避免直接對節點和屬性等操作。

          也可用來讀取配置文件。

          Root類:

          Root是跟節點。結點名默認為"root",但是可以根據需要改變,使用setNodeName(String nodeName)。

          put(String key, Object value)是添加屬性值。

          setValue(String value)是設定節點值。

          parseXml(String xml)將xml字符串解析出Root對象。

          toXml()將Root對象轉為字符串。

          addItem(Item item)為添加子節點。

           

          Item類:

          addItem(Item item)為添加子節點,可以嵌套。

          parseElement(Element ele)為解析節點。 

          Element toElement()將Item對象轉成元素。

          其他的跟Root類差不多。

          String toString()減Item轉成字符串。

           

          不多做解釋了,看看源碼就知道,很簡單,雖不是很完善,但也可用用了。你可以再根據自己需要修改。

          Root

          import java.util.ArrayList;
          import java.util.Iterator;
          import java.util.LinkedHashMap;
          import java.util.List;
          import java.util.Map;

          import org.apache.commons.collections.CollectionUtils;
          import org.apache.commons.lang.StringUtils;
          import org.dom4j.Attribute;
          import org.dom4j.Document;
          import org.dom4j.DocumentHelper;
          import org.dom4j.Element;


          /**
           * 
          @author haoyu
           * 
           
          */

          public class Root
          {
              
          private String nodeName = "root";
              
          private String name;
              
          private String description;

              
          private Map<String, Object> attributes = new LinkedHashMap<String, Object>();
              
          private List<Item> items;


              
          public Root()
              
          {
              }



              
          public Root(String nodeName)
              
          {
                  
          if(StringUtils.isNotBlank(nodeName))
                  
          {
                      
          this.nodeName = nodeName;
                  }

              }



              
          public String getDescription()
              
          {
                  
          return description;
              }



              
          public void setDescription(String description)
              
          {
                  
          if(StringUtils.isNotBlank(description))
                  
          {
                      
          this.description = description;
                  }

              }



              
          public String getName()
              
          {
                  
          return name;
              }



              
          public void setName(String name)
              
          {
                  
          this.name = name;
              }



              
          public String getNodeName()
              
          {
                  
          return nodeName;
              }



              
          public void setNodeName(String nodeName)
              
          {
                  
          this.nodeName = nodeName;
              }



              
          public void put(String key, Object value)
              
          {
                  attributes.put(key, value);
              }



              
          public Object get(String key)
              
          {
                  
          return attributes.get(key);
              }



              
          public Map<String, Object> getAttributes()
              
          {
                  
          return attributes;
              }



              
          public void setAttributes(Map<String, Object> attributes)
              
          {
                  
          this.attributes = attributes;
              }



              
          public List<Item> getItems()
              
          {
                  
          return items;
              }



              
          public void addItem(Item item)
              
          {
                  
          if(items == null)
                  
          {
                      items 
          = new ArrayList<Item>();
                  }

                  items.add(item);
              }



              
          public String toXml()
              
          {
                  Document doc 
          = DocumentHelper.createDocument();
                  Element rootEle 
          = doc.addElement(nodeName);
                  
          if(name != null)
                  
          {
                      rootEle.addAttribute(
          "name", name);
                  }

                  
          if(description != null)
                  
          {
                      rootEle.addAttribute(
          "description", description);
                  }


                  
          for(Iterator it = attributes.entrySet().iterator(); it.hasNext();)
                  
          {
                      Map.Entry entry 
          = (Map.Entry)it.next();
                      
          if(entry == null || entry.getKey() == null || entry.getValue() == null
                          
          || StringUtils.isBlank(String.valueOf(entry.getKey())))
                      
          {
                          
          continue;
                      }

                      rootEle.addAttribute(String.valueOf(entry.getKey()), String.valueOf(entry.getValue()));
                  }


                  
          if(CollectionUtils.isNotEmpty(items))
                  
          {
                      
          for(Iterator<Item> it = items.iterator(); it.hasNext();)
                      
          {
                          Item item 
          = it.next();
                          rootEle.add(item.toElement());
                      }

                  }

                  
          return doc.asXML();
              }



              
          public String toString()
              
          {
                  
          return toXml();
              }



              @SuppressWarnings(
          "unchecked")
              
          public void parseXml(String xml)
              
          {
                  
          try
                  
          {
                      Document doc 
          = DocumentHelper.parseText(xml);
                      Element rootEle 
          = doc.getRootElement();
                      
          this.setNodeName(rootEle.getName());
                      
          this.setName(rootEle.attributeValue("name"));
                      
          this.setDescription(rootEle.attributeValue("description"));

                      
          for(Iterator it = attributes.entrySet().iterator(); it.hasNext();)
                      
          {
                          Map.Entry entry 
          = (Map.Entry)it.next();
                          
          if(entry == null || entry.getKey() == null || entry.getValue() == null
                              
          || StringUtils.isBlank(String.valueOf(entry.getKey())))
                          
          {
                              
          continue;
                          }


                          rootEle.addAttribute(String.valueOf(entry.getKey()), String.valueOf(entry.getValue()));
                      }


                      
          for(Iterator it = rootEle.attributeIterator(); it.hasNext();)
                      
          {
                          Attribute attr 
          = (Attribute)it.next();
                          
          this.put(attr.getName(), attr.getText());
                      }


                      List
          <Element> items = rootEle.elements();

                      
          if(CollectionUtils.isNotEmpty(items))
                      
          {
                          
          for(Iterator<Element> it = items.iterator(); it.hasNext();)
                          
          {
                              Element recordEle 
          = it.next();
                              Item item 
          = new Item();
                              item.parseElement(recordEle);
                              
          this.addItem(item);
                          }

                      }

                  }

                  
          catch(Exception e)
                  
          {
                      e.printStackTrace();
                  }

              }



              
          public Document trun2Doc()
              
          {
                  
          try
                  
          {
                      
          return DocumentHelper.parseText(this.toString());
                  }

                  
          catch(Exception e)
                  
          {
                      e.printStackTrace();
                  }

                  
          return null;
              }

          }

           

          Item

          import java.util.ArrayList;
          import java.util.Iterator;
          import java.util.LinkedHashMap;
          import java.util.List;
          import java.util.Map;

          import org.apache.commons.collections.CollectionUtils;
          import org.apache.commons.lang.StringUtils;
          import org.dom4j.Attribute;
          import org.dom4j.DocumentHelper;
          import org.dom4j.Element;


          /**
           * 
          @author haoyu
           * 
           
          */

          public class Item
          {

              
          private String nodeName = "item";

              
          private String value;

              
          private Map<String, Object> attributes = new LinkedHashMap<String, Object>();

              
          private List<Item> items;


              
          public Item()
              
          {
              }



              
          public Item(String nodeName)
              
          {
                  
          if(StringUtils.isNotBlank(nodeName))
                  
          {
                      
          this.nodeName = nodeName;
                  }

              }



              
          public String getNodeName()
              
          {
                  
          return nodeName;
              }



              
          public void setNodeName(String nodeName)
              
          {
                  
          if(StringUtils.isNotBlank(nodeName))
                  
          {
                      
          this.nodeName = nodeName;
                  }

              }



              
          public void put(String key, Object value)
              
          {
                  attributes.put(key, value);
              }



              
          public Object get(String key)
              
          {
                  
          return attributes.get(key);
              }



              
          public Map<String, Object> getAttributes()
              
          {
                  
          return attributes;
              }



              
          public void setAttributes(Map<String, Object> attributes)
              
          {
                  
          this.attributes = attributes;
              }



              
          public String getValue()
              
          {
                  
          return value;
              }



              
          public void setValue(String value)
              
          {
                  
          this.value = value;
              }



              
          public List<Item> getItems()
              
          {
                  
          return items;
              }



              
          public void addItem(Item item)
              
          {
                  
          if(items == null)
                  
          {
                      items 
          = new ArrayList<Item>();
                  }

                  items.add(item);
              }



              
          public void parseElement(Element ele)
              
          {
                  
          this.nodeName = ele.getName();
                  
          for(Iterator it = ele.attributeIterator(); it.hasNext();)
                  
          {
                      Attribute attr 
          = (Attribute)it.next();
                      
          this.put(attr.getName(), attr.getText());
                  }

                  
          if(StringUtils.isNotBlank(ele.getText()))
                  
          {
                      
          this.setValue(ele.getText());
                  }

                  List
          <Element> itemEles = ele.elements();
                  
          if(CollectionUtils.isNotEmpty(itemEles))
                  
          {
                      
          for(Iterator it = itemEles.iterator(); it.hasNext();)
                      
          {
                          Element itemEle 
          = (Element)it.next();
                          Item item 
          = new Item(itemEle.getName());
                          item.parseElement(itemEle);
                          
          this.addItem(item);
                      }


                  }

              }



              
          public Element toElement()
              
          {
                  Element itemEle 
          = DocumentHelper.createElement(nodeName);
                  
          for(Iterator it = attributes.entrySet().iterator(); it.hasNext();)
                  
          {
                      Map.Entry entry 
          = (Map.Entry)it.next();
                      
          if(entry == null || entry.getKey() == null || entry.getValue() == null
                          
          || StringUtils.isBlank(String.valueOf(entry.getKey())))
                      
          {
                          
          continue;
                      }


                      itemEle.addAttribute(String.valueOf(entry.getKey()), String.valueOf(entry.getValue()));
                  }

                  
          if(CollectionUtils.isNotEmpty(items))
                  
          {
                      
          for(Iterator it = items.iterator(); it.hasNext();)
                      
          {
                          Item item 
          = (Item)it.next();
                          itemEle.add(item.toElement());
                      }

                  }

                  
          if(value != null)
                  
          {
                      itemEle.setText(value);
                  }


                  
          return itemEle;
              }



              
          public String toString()
              
          {
                  StringBuffer sb 
          = new StringBuffer();
                  sb.append(
          "<").append(nodeName);
                  
          for(Iterator it = attributes.entrySet().iterator(); it.hasNext();)
                  
          {
                      Map.Entry entry 
          = (Map.Entry)it.next();
                      sb.append(
          " ").append(entry.getKey()).append("=\"").append(entry.getValue()).append("\"");
                  }

                  
          if(value != null)
                  
          {
                      sb.append(
          ">").append(value).append("</").append(nodeName).append(">");
                  }

                  
          else
                  
          {
                      sb.append(
          "/>");
                  }

                  
          return sb.toString();
              }

          }

           

          簡單應用一下試試:

              public static void main(String[] args)
              
          {
                  Root bookmark 
          = new Root();
                  bookmark.setNodeName(
          "書簽");

                  Item news 
          = new Item();
                  news.setNodeName(
          "類別");
                  news.put(
          "描述""新聞");
                  Item sina 
          = new Item();
                  sina.setNodeName(
          "網點");
                  sina.put(
          "名稱""新浪");
                  sina.setValue(
          "http://www.sina.com");
                  news.addItem(sina);

                  Item search 
          = new Item();
                  search.setNodeName(
          "網點");
                  search.setNodeName(
          "類別");
                  news.put(
          "描述""搜索引擎");
                  Item google 
          = new Item();
                  google.setNodeName(
          "網點");
                  google.put(
          "名稱""谷歌");
                  google.setValue(
          "http://www.google.com");
                  Item baidu 
          = new Item();
                  baidu.setNodeName(
          "網點");
                  baidu.put(
          "名稱""百度");
                  baidu.setValue(
          "http://www.baidu.com");
                  search.addItem(google);
                  search.addItem(baidu);

                  bookmark.addItem(news);
                  bookmark.addItem(search);
                  System.out.println(bookmark.toString());

                  Root newBookmark 
          = new Root();
                  newBookmark.parseXml(bookmark.toString());
                  System.out.println(newBookmark.toString());
              }

           

          結果輸出:

          <?xml version="1.0" encoding="UTF-8"?>
          <書簽><類別 描述="新聞"><網點 名稱="新浪">http://www.sina.com</網點></類別><類別 描述="搜索引擎"><網點 名稱="谷歌">http://www.google.com</網點><網點 名稱="百度">http://www.baidu.com</網點></類別></書簽>
          <?xml version="1.0" encoding="UTF-8"?>
          <書簽><類別 描述="新聞"><網點 名稱="新浪">http://www.sina.com</網點></類別><類別 描述="搜索引擎"><網點 名稱="谷歌">http://www.google.com</網點><網點 名稱="百度">http://www.baidu.com</網點></類別></書簽>
          posted on 2007-08-15 01:08 三告習習 閱讀(1497) 評論(0)  編輯  收藏 所屬分類: java/jdk
          主站蜘蛛池模板: 平泉县| 怀集县| 乐清市| 涪陵区| 景宁| 舞钢市| 拜城县| 启东市| 吴川市| 榕江县| 页游| 北京市| 五家渠市| 鄯善县| 马关县| 延长县| 聂拉木县| 柯坪县| 邻水| 沂南县| 星子县| 延庆县| 金川县| 金山区| 松江区| 固原市| 华池县| 湖南省| 忻州市| 牙克石市| 神木县| 丹东市| 施秉县| 梁山县| 宁晋县| 伊金霍洛旗| 沧源| 喀喇| 兴安盟| 虹口区| 滨海县|