大魚

          JDOM解析XML字符串(非XML文檔)

          package com;

          import java.io.IOException;
          import java.io.StringReader;
          import java.util.List;

          import org.jdom.Document;
          import org.jdom.Element;
          import org.jdom.JDOMException;
          import org.jdom.Namespace;
          import org.jdom.input.SAXBuilder;
          import org.xml.sax.InputSource;


          public class DuXMLDoc {
              public List xmlElements(String xmlDoc) {
                  //創建一個新的字符串
                  StringReader read = new StringReader(xmlDoc);
                  //創建新的輸入源SAX 解析器將使用 InputSource 對象來確定如何讀取 XML 輸入
                  InputSource source = new InputSource(read);
                  //創建一個新的SAXBuilder
                  SAXBuilder sb = new SAXBuilder();
                  try {
                      //通過輸入源構造一個Document
                      Document doc = sb.build(source);
                      //取的根元素
                      Element root = doc.getRootElement();
                      System.out.println(root.getName());//輸出根元素的名稱(測試)
                      //得到根元素所有子元素的集合
                      List jiedian = root.getChildren();
                      //獲得XML中的命名空間(XML中未定義可不寫)
                      Namespace ns = root.getNamespace();
                      Element et = null;
                      for(int i=0;i<jiedian.size();i++){
                          et = (Element) jiedian.get(i);//循環依次得到子元素
                          /**//*
                           * 無命名空間定義時
                           * et.getChild("users_id").getText();
                           * et.getChild("users_address",ns).getText()
                           */
                          System.out.println(et.getChild("users_id",ns).getText());
                          System.out.println(et.getChild("users_address",ns).getText());
                      }
                      /**//*
                       * 如要取<row>下的子元素的名稱
                       */
                      et = (Element) jiedian.get(0);
                      List zjiedian = et.getChildren();
                      for(int j=0;j<zjiedian.size();j++){
                          Element xet = (Element) zjiedian.get(j);
                          System.out.println(xet.getName());
                      }
                  } catch (JDOMException e) {
                      // TODO 自動生成 catch 塊
                      e.printStackTrace();
                  } catch (IOException e) {
                      // TODO 自動生成 catch 塊
                      e.printStackTrace();
                  }
                  return null;
              }
              public static void main(String[] args){
                  DuXMLDoc doc = new DuXMLDoc();
                  String xml = "<?xml version=\"1.0\" encoding=\"gb2312\"?>"+
                  "<Result xmlns=\"http://www.fiorano.com/fesb/activity/DBQueryOnInput2/Out\">"+
                     "<row resultcount=\"1\">"+
                        "<users_id>1001     </users_id>"+
                        "<users_name>wangwei   </users_name>"+
                        "<users_group>80        </users_group>"+
                        "<users_address>1001號   </users_address>"+
                     "</row>"+
                     "<row resultcount=\"1\">"+
                        "<users_id>1002     </users_id>"+
                        "<users_name>wangwei   </users_name>"+
                        "<users_group>80        </users_group>"+
                        "<users_address>1002號   </users_address>"+
                     "</row>"+
                  "</Result>";
                  doc.xmlElements(xml);
              }
          }

          posted on 2010-02-23 14:25 大魚 閱讀(278) 評論(0)  編輯  收藏 所屬分類: j2se

          主站蜘蛛池模板: 塘沽区| 屏东市| 嘉峪关市| 恭城| 藁城市| 新田县| 资中县| 连江县| 峨眉山市| 九寨沟县| 武乡县| 桦南县| 莱西市| 白山市| 乐平市| 于都县| 巫溪县| 黄平县| 仙桃市| 德化县| 北辰区| 正宁县| 筠连县| 济南市| 保定市| 青海省| 遂川县| 都安| 荥阳市| 龙胜| 偃师市| 南投县| 尉氏县| 普格县| 海林市| 宁德市| 开江县| 重庆市| 鱼台县| 郁南县| 祁连县|