无线&移动互联网技术研发

换位思考·····
posts - 19, comments - 53, trackbacks - 0, articles - 283
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

Dom4j XPath 应用

Posted on 2009-08-08 23:48 Gavin.lee 阅读(725) 评论(0)  编辑  收藏 所属分类: xml doc 操作

Dom4j XPath同理jdom XPath,也是需要jaxen.jar包,同时注意jar包版本
样例test.xml

<?xml version="1.0" encoding="gb2312"?> 
<root id="TK12" name="管理员" value="">
</root>


console xml

<?xml version="1.0" encoding="gb2312"?>
<root id="TK12" name="管理员" value="分布"> 
  
<cell value="北京">
    
<element type="数值" name="人数">300</element>
  
</cell>
  
<cell value="天津">
    
<element type="数值" name="人数">300</element>
  
</cell>
  
<cell value="上海">
    
<element type="数值" name="人数">200</element>
  
</cell>
</root>


XPath application

package com.Gavin.dom4jXpath;

import java.io.File;
import java.io.IOException;
import java.io.StringWriter;
import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.Iterator;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

public class Dom4jXpath {
    
public static String generateXml(HashMap map) {
        String strXml 
= null;
        
if (map != null{
            SAXReader reader 
= new SAXReader();
            Document document 
= null;
            
try {
                document 
= reader.read(new File("D:/test.xml"));
            }
 catch (DocumentException e) {
                e.printStackTrace();
            }

            Element root 
= (Element) document.selectSingleNode("//root");
            root.attribute(
"value").setValue("分布");
            Iterator iter 
= map.keySet().iterator();
            
while (iter.hasNext()) {
                String key 
= (String) iter.next();
                String value 
= (String) map.get(key);
                Element element 
= root.addElement("cell").addAttribute("value",    key);
                element.addElement(
"element").addAttribute("type""数值").addAttribute("name""人数").addText(value);
            }

            strXml 
= encodeXml(document, "gb2312");
        }


        
return strXml;
    }


    
private static String encodeXml(Document document, String aEncode) {
        
// 进行编码转换
        StringWriter sw = new StringWriter();
        OutputFormat format 
= OutputFormat.createPrettyPrint();
        format.setEncoding(aEncode);
        
try {
            XMLWriter writer 
= new XMLWriter(format);
            writer.setWriter(sw);
            writer.write(document);
        }
 catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
 catch (IOException e) {
            e.printStackTrace();
        }

        
return sw.toString();
    }


    
public static void main(String[] args) {
        HashMap map 
= new HashMap();
        map.put(
"上海""200");
        map.put(
"北京""300");
        map.put(
"天津""300");
        System.out.println(generateXml(map));

    }


}


只有注册用户登录后才能发表评论。


网站导航: