配置開發包

          dom4j-1.6.1.jar

          jaxen-1.1-beta-6.jarXPath必備)

           

          取某一節點

          Element root = (Element) document.selectSingleNode("http://root");

           

          取某一節點的屬性

          Attribute attribute = (Attribute) document.selectSingleNode("http://root/cell/@value");

           

          使用經驗

          我們在做系統間交互時,通常通過自定義的xml文件進行數據交換。例如:系統A需要向系統B傳輸一個xml字串的條件如下:

          <?xml version="1.0" encoding="gb2312"?>

          <root systemid="Darenkou" userid="admin" default="DA" icon="0000">

                 <cell value=""/>

          </root>

          系統A只需填充cell節點的value屬性值,我的建議是將這段xml寫成本地文件,每次傳輸時首先讀取xml文件,再置cell節點的value屬性值,然后將xml對象轉變成字串傳給系統B。這樣的優點是:一般systemid="Darenkou" userid="admin" default="DA" icon="0000" 是傳輸參數,當有所變動時只需修改本地文件即可。

           

          詳細例程

          test.xml

          <?xml version="1.0" encoding="gb2312"?>

          <root id="TK12" name="管理員" value=""/>

           

          XmlTest.java

          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 XmlTest {

                 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("http://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));

           

                 }

          }

           

          posted on 2006-03-08 21:32 野草 閱讀(5446) 評論(4)  編輯  收藏 所屬分類: xml

          評論:
          # re: 使用dom4j和XPath 2006-03-08 21:54 | tt
          不錯,繼續學習<a href="www.qq.com">qq</a>  回復  更多評論
            
          # re: 使用dom4j和XPath[未登錄] 2007-06-01 11:51 | domy
          很基礎,不過很重要的,謝謝  回復  更多評論
            
          # re: 使用dom4j和XPath[未登錄] 2009-03-31 20:55 | yy
          XPath在哪??  回復  更多評論
            
          # re: 使用dom4j和XPath 2009-05-15 19:23 | 地方
          感謝分享 我不能用Xpath 原來是沒有導入jaxen-1.1-beta-6.jar這個包  回復  更多評論
            

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 昌邑市| 赤城县| 云和县| 溧水县| 广南县| 且末县| 精河县| 库车县| 独山县| 长乐市| 三河市| 奉节县| 太仓市| 格尔木市| 华宁县| 龙泉市| 贵港市| 成安县| 五指山市| 辽阳县| 西畴县| 广宗县| 南昌市| 乐昌市| 安西县| 苏尼特右旗| 洛南县| 肥乡县| 武川县| 厦门市| 靖宇县| 邹城市| 晋宁县| 简阳市| 正安县| 桦南县| 襄垣县| 台山市| 大田县| 青铜峡市| 绵竹市|