配置開發(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)

          我們在做系統(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對象轉(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 野草 閱讀(5454) 評論(4)  編輯  收藏 所屬分類: xml

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

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 麟游县| 台前县| 迁西县| 克什克腾旗| 靖安县| 孝昌县| 和硕县| 子长县| 饶平县| 鹤壁市| 霍州市| 巫溪县| 沙湾县| 安西县| 苍南县| 永善县| 长岭县| 县级市| 黄石市| 星座| 新巴尔虎右旗| 搜索| 林芝县| 乐亭县| 洛浦县| 宜兰县| 延安市| 益阳市| 璧山县| 依安县| 微山县| 垫江县| 佛山市| 张家口市| 洞头县| 海盐县| 乌审旗| 原阳县| 松桃| 营山县| 大荔县|