配置開發(fā)包

          dom4j-1.6.1.jar

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

           

          取某一節(jié)點

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

           

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

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

           

          使用經(jīng)驗

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

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

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

                 <cell value=""/>

          </root>

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

           

          詳細例程

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

                        // 進行編碼轉(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 野草 閱讀(5449) 評論(4)  編輯  收藏 所屬分類: xml

          評論:
          # re: 使用dom4j和XPath 2006-03-08 21:54 | tt
          不錯,繼續(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這個包  回復(fù)  更多評論
            

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


          網(wǎng)站導(dǎo)航:
           
          <2006年3月>
          2627281234
          567891011
          12131415161718
          19202122232425
          2627282930311
          2345678

          常用鏈接

          隨筆分類(39)

          相冊

          最新隨筆

          搜索

          •  

          積分與排名

          • 積分 - 73571
          • 排名 - 755

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 财经| 客服| 宜丰县| 隆林| 延长县| 漠河县| 郴州市| 闵行区| 五华县| 安阳县| 来安县| 柯坪县| 巨鹿县| 芜湖县| 新干县| 阳山县| 湟源县| 越西县| 垣曲县| 闽侯县| 肥西县| 奈曼旗| 玉田县| 建平县| 阿尔山市| 闽侯县| 阿鲁科尔沁旗| 谢通门县| 上林县| 监利县| 萝北县| 东光县| 郓城县| 和林格尔县| 湟中县| 莒南县| 内江市| 大城县| 齐齐哈尔市| 安龙县| 贺兰县|