dom4j解析xml方法

 

dom4j解析xml方法package paserImpl;
dom4j解析xml方法
dom4j解析xml方法
import java.io.ByteArrayOutputStream;
dom4j解析xml方法
import java.util.ArrayList;
dom4j解析xml方法
import java.util.Collection;
dom4j解析xml方法
import java.util.HashMap;
dom4j解析xml方法
import java.util.Iterator;
dom4j解析xml方法
import java.util.List;
dom4j解析xml方法
import java.util.Map;
dom4j解析xml方法
import java.util.regex.Matcher;
dom4j解析xml方法
import java.util.regex.Pattern;
dom4j解析xml方法
dom4j解析xml方法
import org.dom4j.Document;
dom4j解析xml方法
import org.dom4j.DocumentHelper;
dom4j解析xml方法
import org.dom4j.Element;
dom4j解析xml方法
import org.dom4j.Node;
dom4j解析xml方法
import org.dom4j.io.OutputFormat;
dom4j解析xml方法
import org.dom4j.io.XMLWriter;
dom4j解析xml方法
dom4j解析xml方法dom4j解析xml方法
/** *//**
dom4j解析xml方法 * XML描述的解析
dom4j解析xml方法 * 
dom4j解析xml方法 *
@author zxs_9999
dom4j解析xml方法 
*/

dom4j解析xml方法dom4j解析xml方法
public class GenericXmlMessage ...{
dom4j解析xml方法 
dom4j解析xml方法    
private Document doc;
dom4j解析xml方法    
private Map internalMsg = new HashMap();
dom4j解析xml方法    
private Collection cdataPathList = new ArrayList(); //只为CDATA的节点路径列表
dom4j解析xml方法
    private static final Pattern pattern = Pattern.compile("/[/d/]$");
dom4j解析xml方法    
dom4j解析xml方法dom4j解析xml方法    
public GenericXmlMessage() ...{
dom4j解析xml方法        doc 
= DocumentHelper.createDocument();
dom4j解析xml方法        internalMsg.put(
"CDATAPathList",cdataPathList);
dom4j解析xml方法    }

dom4j解析xml方法
dom4j解析xml方法dom4j解析xml方法    
public GenericXmlMessage(Document doc) ...{
dom4j解析xml方法
dom4j解析xml方法        
this.doc = doc;
dom4j解析xml方法        
dom4j解析xml方法    }

dom4j解析xml方法
dom4j解析xml方法dom4j解析xml方法    
/** *//**
dom4j解析xml方法     * 得到默认类别的键值
dom4j解析xml方法     *
dom4j解析xml方法     * 
@param key String
dom4j解析xml方法     * 
@return Object
dom4j解析xml方法     
*/

dom4j解析xml方法dom4j解析xml方法    
public Object get(String key) ...{
dom4j解析xml方法        
return get("value", key);
dom4j解析xml方法    }

dom4j解析xml方法
dom4j解析xml方法dom4j解析xml方法    
/** *//**
dom4j解析xml方法     * 得到默认类别的键值
dom4j解析xml方法     *
dom4j解析xml方法     * 
@param key String
dom4j解析xml方法     * 
@return Object
dom4j解析xml方法     
*/

dom4j解析xml方法dom4j解析xml方法    
public String getString(String key) ...{
dom4j解析xml方法        
return (String) get("value", key);
dom4j解析xml方法    }

dom4j解析xml方法
dom4j解析xml方法dom4j解析xml方法    
/** *//**
dom4j解析xml方法     * 得到某类别的键值
dom4j解析xml方法     
*/

dom4j解析xml方法dom4j解析xml方法    
public Object get(String category, String key) ...{
dom4j解析xml方法dom4j解析xml方法        
if (category.equals("list")) ...{
dom4j解析xml方法            List list 
= doc.selectNodes(key);
dom4j解析xml方法            List values 
= new ArrayList();
dom4j解析xml方法dom4j解析xml方法            
for (Iterator itr = list.iterator(); itr.hasNext();) ...{
dom4j解析xml方法                Element element 
= (Element) itr.next();
dom4j解析xml方法                values.add(element.getText());
dom4j解析xml方法            }

dom4j解析xml方法            
return values;
dom4j解析xml方法dom4j解析xml方法        }
 else ...{
dom4j解析xml方法dom4j解析xml方法            
if (key.startsWith("//")) ...{
dom4j解析xml方法                
//XML节点
dom4j解析xml方法
                Node node = doc.selectSingleNode(key);
dom4j解析xml方法dom4j解析xml方法                
if (node == null...{
dom4j解析xml方法                    
return "";
dom4j解析xml方法dom4j解析xml方法                }
 else ...{
dom4j解析xml方法                 
if(node.getText()!= null && node.getText().length()> 0)
dom4j解析xml方法dom4j解析xml方法                 
...{
dom4j解析xml方法                  
//获取节点值
dom4j解析xml方法
                  return node.getText();
dom4j解析xml方法                 }

dom4j解析xml方法                 
else if(((Element)node).attribute("val"!= null && ((Element)node).attribute("val").getValue().length()>0)
dom4j解析xml方法dom4j解析xml方法                 
...{
dom4j解析xml方法                  
//获取属性
dom4j解析xml方法
                  return ((Element)node).attribute("val").getValue();
dom4j解析xml方法                 }

dom4j解析xml方法                 
else
dom4j解析xml方法dom4j解析xml方法                 
...{
dom4j解析xml方法                  
return "";
dom4j解析xml方法                 }

dom4j解析xml方法                }

dom4j解析xml方法dom4j解析xml方法            }
 else ...{
dom4j解析xml方法                
//非xml节点
dom4j解析xml方法
                return internalMsg.get(key);
dom4j解析xml方法            }

dom4j解析xml方法
dom4j解析xml方法        }

dom4j解析xml方法    }

dom4j解析xml方法
dom4j解析xml方法dom4j解析xml方法    
/** *//**
dom4j解析xml方法     * 得到某类别的键值
dom4j解析xml方法     
*/

dom4j解析xml方法dom4j解析xml方法    
public String getString(String category, String key) ...{
dom4j解析xml方法dom4j解析xml方法        
if (category.equals("list")) ...{
dom4j解析xml方法            
throw new IllegalArgumentException("not allow list here");
dom4j解析xml方法dom4j解析xml方法        }
 else ...{
dom4j解析xml方法dom4j解析xml方法            
if (key.startsWith("//")) ...{
dom4j解析xml方法                
//XML节点
dom4j解析xml方法
                Node node = doc.selectSingleNode(key);
dom4j解析xml方法dom4j解析xml方法                
if (node == null...{
dom4j解析xml方法                    
return "";
dom4j解析xml方法dom4j解析xml方法                }
 else ...{
dom4j解析xml方法                    
return node.getText();
dom4j解析xml方法                }

dom4j解析xml方法dom4j解析xml方法            }
 else ...{
dom4j解析xml方法                
//非xml节点
dom4j解析xml方法
                return (String) internalMsg.get(key);
dom4j解析xml方法            }

dom4j解析xml方法
dom4j解析xml方法        }

dom4j解析xml方法    }

dom4j解析xml方法
dom4j解析xml方法dom4j解析xml方法    
/** *//**
dom4j解析xml方法     * 设置键值
dom4j解析xml方法     
*/

dom4j解析xml方法dom4j解析xml方法    
public void set(String key, Object value) ...{
dom4j解析xml方法
dom4j解析xml方法        set(
"TEXT", key, value);
dom4j解析xml方法    }

dom4j解析xml方法
dom4j解析xml方法dom4j解析xml方法    
private Node createNewNodeByXPath(String xpath) ...{
dom4j解析xml方法dom4j解析xml方法        
if (xpath.startsWith("//")) ...{
dom4j解析xml方法            String[] nodes 
= xpath.substring(2, xpath.length()).split("/");
dom4j解析xml方法            String root 
= nodes[0];
dom4j解析xml方法            Element currentElement 
= doc.getRootElement();
dom4j解析xml方法dom4j解析xml方法            
if (currentElement == null...{
dom4j解析xml方法                currentElement 
= doc.addElement(root);
dom4j解析xml方法            }

dom4j解析xml方法dom4j解析xml方法            
for (int i = 1; i < nodes.length; i++...{
dom4j解析xml方法                Matcher matcher 
= pattern.matcher(nodes[i]);
dom4j解析xml方法dom4j解析xml方法                
if (matcher.find()) ...{
dom4j解析xml方法                    
//多个要素
dom4j解析xml方法
                    String numberStr = matcher.group(0);
dom4j解析xml方法                    
int n = Integer.parseInt(numberStr.substring(1, numberStr.length() - 1));
dom4j解析xml方法                    String elementName 
= nodes[i].substring(0, matcher.start());
dom4j解析xml方法                    
int size = currentElement.elements(elementName).size();
dom4j解析xml方法dom4j解析xml方法                    
if (size < n) ...{
dom4j解析xml方法dom4j解析xml方法                        
for (int j = size; j < n; j++...{
dom4j解析xml方法                            currentElement.addElement(elementName);
dom4j解析xml方法                        }

dom4j解析xml方法                    }

dom4j解析xml方法                    currentElement 
= (Element) currentElement.elements(elementName).get(n - 1);
dom4j解析xml方法dom4j解析xml方法                }
 else ...{
dom4j解析xml方法                    
//单个要素
dom4j解析xml方法
                    Element element = currentElement.element(nodes[i]);
dom4j解析xml方法dom4j解析xml方法                    
if (element == null...{
dom4j解析xml方法                        element 
= currentElement.addElement(nodes[i]);
dom4j解析xml方法                    }

dom4j解析xml方法                    currentElement 
= element;
dom4j解析xml方法                }

dom4j解析xml方法
dom4j解析xml方法            }

dom4j解析xml方法            
return currentElement;
dom4j解析xml方法        }

dom4j解析xml方法        
return null;
dom4j解析xml方法    }

dom4j解析xml方法
dom4j解析xml方法dom4j解析xml方法    
/** *//**
dom4j解析xml方法     * 设置键值
dom4j解析xml方法     
*/

dom4j解析xml方法dom4j解析xml方法    
public void set(String category, String key, Object value) ...{
dom4j解析xml方法dom4j解析xml方法        
if (key.startsWith("//")) ...{
dom4j解析xml方法            
//XML节点
dom4j解析xml方法
            Node node = doc.selectSingleNode(key);
dom4j解析xml方法dom4j解析xml方法            
if (node == null...{
dom4j解析xml方法                node 
= createNewNodeByXPath(key);
dom4j解析xml方法            }

dom4j解析xml方法dom4j解析xml方法            
if (category.equalsIgnoreCase("CDATA")) ...{
dom4j解析xml方法                ((Element) node).addCDATA((String)value);
dom4j解析xml方法                cdataPathList.add(key);
dom4j解析xml方法                
//System.out.println(node);
dom4j解析xml方法dom4j解析xml方法
            }
 else ...{                
dom4j解析xml方法             
if(get("value""ClientType"!= null && ((String)get("value""ClientType")).equals("1"))
dom4j解析xml方法dom4j解析xml方法             
...{
dom4j解析xml方法              System.out.println(
"当前是字符终端3");
dom4j解析xml方法              
//当前是字符终端
dom4j解析xml方法
              ((Element) node).addAttribute("val",(String) value);
dom4j解析xml方法             }

dom4j解析xml方法             
else
dom4j解析xml方法dom4j解析xml方法             
...{
dom4j解析xml方法              node.setText((String) value);
dom4j解析xml方法             }

dom4j解析xml方法                
dom4j解析xml方法            }

dom4j解析xml方法dom4j解析xml方法        }
 else ...{
dom4j解析xml方法            
//非xml节点
dom4j解析xml方法
            internalMsg.put(key, value);
dom4j解析xml方法        }

dom4j解析xml方法
dom4j解析xml方法    }

dom4j解析xml方法
dom4j解析xml方法dom4j解析xml方法    
/** *//**
dom4j解析xml方法     * 清除所有信息
dom4j解析xml方法     
*/

dom4j解析xml方法dom4j解析xml方法    
public void clear() ...{
dom4j解析xml方法        doc.clearContent();
dom4j解析xml方法    }

dom4j解析xml方法
dom4j解析xml方法dom4j解析xml方法    
/** *//**
dom4j解析xml方法     * 得到所有的category
dom4j解析xml方法     
*/

dom4j解析xml方法dom4j解析xml方法    
public Collection findAllCategories() ...{
dom4j解析xml方法        
return new ArrayList();
dom4j解析xml方法    }

dom4j解析xml方法
dom4j解析xml方法dom4j解析xml方法    
/** *//**
dom4j解析xml方法     * 得到某一个category的所有值
dom4j解析xml方法     
*/

dom4j解析xml方法dom4j解析xml方法    
public Collection findAllKeysByCategory(String category) ...{
dom4j解析xml方法        
return new ArrayList();
dom4j解析xml方法    }

dom4j解析xml方法
dom4j解析xml方法dom4j解析xml方法    
/** *//**
dom4j解析xml方法     * 得到XML描述
dom4j解析xml方法     *
dom4j解析xml方法     * 
@return 返回XML
dom4j解析xml方法     
*/

dom4j解析xml方法dom4j解析xml方法    
public String asXML() ...{
dom4j解析xml方法     
dom4j解析xml方法        XMLWriter writer 
= null;
dom4j解析xml方法dom4j解析xml方法        
/** *//** 格式化输出,类型IE浏览一样 */
dom4j解析xml方法        OutputFormat format 
= OutputFormat.createPrettyPrint();
dom4j解析xml方法dom4j解析xml方法        
/** *//** 指定XML编码 */
dom4j解析xml方法        format.setEncoding(
"GBK");
dom4j解析xml方法        writer 
= new XMLWriter();
dom4j解析xml方法     ByteArrayOutputStream   baos   
=   new   ByteArrayOutputStream();
dom4j解析xml方法        
try
dom4j解析xml方法dom4j解析xml方法        
...{
dom4j解析xml方法         writer
= new XMLWriter(baos,format);
dom4j解析xml方法         writer.write(doc);
dom4j解析xml方法         writer.close();
dom4j解析xml方法        }

dom4j解析xml方法        
catch(Exception ex)
dom4j解析xml方法dom4j解析xml方法        
...{
dom4j解析xml方法         System.out.println(
"发生错误!");
dom4j解析xml方法        }
      
dom4j解析xml方法        
//return doc.asXML();
dom4j解析xml方法
     return baos.toString();
dom4j解析xml方法    }

dom4j解析xml方法
dom4j解析xml方法
dom4j解析xml方法}

dom4j解析xml方法 
dom4j解析xml方法
上一篇:windows下启动和关闭oracle数据库的bat脚本


下一篇:lucene3.5以上版本jar包模块的用处(分词+分组+高亮+搜索提示)