配置開發(fā)包

          dom4j-1.6.1.jar

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

           

          取某一節(jié)點(diǎn)

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

           

          取某一節(jié)點(diǎn)的屬性

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

           

          使用經(jīng)驗(yàn)

          我們?cè)谧鱿到y(tǒng)間交互時(shí),通常通過自定義的xml文件進(jìn)行數(shù)據(jù)交換。例如:系統(tǒng)A需要向系統(tǒng)B傳輸一個(gè)xml字串的條件如下:

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

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

                 <cell value=""/>

          </root>

          系統(tǒng)A只需填充cell節(jié)點(diǎn)的value屬性值,我的建議是將這段xml寫成本地文件,每次傳輸時(shí)首先讀取xml文件,再置cell節(jié)點(diǎn)的value屬性值,然后將xml對(duì)象轉(zhuǎn)變成字串傳給系統(tǒng)B。這樣的優(yōu)點(diǎn)是:一般systemid="Darenkou" userid="admin" default="DA" icon="0000" 是傳輸參數(shù),當(dāng)有所變動(dòng)時(shí)只需修改本地文件即可。

           

          詳細(xì)例程

          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", "數(shù)值")

                                                    .addAttribute("name", "人數(shù)").addText(value);

           

                               }

           

                               strXml = encodeXml(document, "gb2312");

                        }

           

                        return strXml;

                 }

           

                 private static String encodeXml(Document document, String aEncode) {

                        // 進(jìn)行編碼轉(zhuǎn)換

                        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 野草 閱讀(5443) 評(píng)論(4)  編輯  收藏 所屬分類: xml

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

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 社会| 班戈县| 明水县| 伊宁市| 遵义县| 甘孜县| 缙云县| 永新县| 普陀区| 全椒县| 宁蒗| 滨州市| 新巴尔虎左旗| 东至县| 民丰县| 巍山| 武陟县| 霍城县| 沂源县| 巴林右旗| 盐源县| 西乌珠穆沁旗| 彰化市| 盐边县| 吴忠市| 松原市| 临邑县| 张家川| 崇仁县| 荆州市| 四川省| 洛隆县| 社会| 托克逊县| 读书| 疏勒县| 碌曲县| 黔江区| 微山县| 枞阳县| 吐鲁番市|