<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    竹里館→憶童年

    獨坐幽篁里,彈琴復長嘯;深林人不知,明月來相照
    posts - 9, comments - 23, trackbacks - 0, articles - 0
       :: 首頁 :: 新隨筆 :: 聯系 ::  :: 管理

    JDOM解析這樣的XML文件

    Posted on 2007-07-20 17:31 憶童年 閱讀(1464) 評論(2)  編輯  收藏 所屬分類: XML and WebService

    這幾天在開發中遇到的問題
    XML文檔內容

     1<?xml version="1.0" encoding="GB2312"?>
     2<Result xmlns="http://www.fiorano.com/fesb/activity/DBQueryOnInput2/Out">
     3   <query>select * from users where users_id='11111'</query>
     4   <row resultcount="1">
     5      <column name="users_id" type="CHAR">11111     </column>
     6      <column name="users_name" type="CHAR">wangwei   </column>
     7      <column name="users_group" type="CHAR">80        </column>
     8      <column name="users_address" type="CHAR">11111號   </column>
     9   </row>
    10   <row resultcount="1">
    11      <column name="users_id" type="CHAR">11111     </column>
    12      <column name="users_name" type="CHAR">wangwei   </column>
    13      <column name="users_group" type="CHAR">80        </column>
    14      <column name="users_address" type="CHAR">11111號   </column>
    15   </row>
    16</Result>

    本人遇到的問題是在<row></row>下的子元素名稱相同如上第5,6,7,8行.這時當用JDOM通過如下代碼獲取時

    package com.xml;

    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    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;

    public class DuXMLTest2 {
        
    public void loadXMLdoc(){
            FileInputStream fi 
    = null;
            
    try {
                fi 
    = new FileInputStream("Test2.xml");
                SAXBuilder sb 
    = new SAXBuilder();
                
    try {
                    Document doc 
    = sb.build(fi);
                    Element root 
    = doc.getRootElement();
                    Namespace ns 
    = root.getNamespace();
                    List jiedian 
    = root.getChildren();
                    Element et 
    = (Element) jiedian.get(1);
                    
    //System.out.println(et.getName());
                    List zjiedian = et.getChildren();
                    Element xet 
    = null;
                    String value[] 
    = new String[zjiedian.size()];
                    
    for(int i=0;i<jiedian.size()-1;i++){
                        xet 
    = (Element) jiedian.get(i+1);
                        
    for(int j=0;j<zjiedian.size();j++){
                            value[j]
    =xet.getChild("column",ns).getText();
                            System.out.println(value[j]);
                        }

                    }

                }
     catch (JDOMException e) {
                    
    // TODO 自動生成 catch 塊
                    e.printStackTrace();
                }
     catch (IOException e) {
                    
    // TODO 自動生成 catch 塊
                    e.printStackTrace();
                }

            }
     catch (FileNotFoundException e) {
                
    // TODO 自動生成 catch 塊
                e.printStackTrace();
            }

        }

        
    public static void main(String[] args){
            DuXMLTest2 dt 
    = new DuXMLTest2();
            dt.loadXMLdoc();
        }

    }

    通過上面的代碼運行時產生的結果都只取屬性name="users_id"的元素的值即顯示的內容都為11111.看到這結果當時都快暈了,馬上要吃中午飯搞出這么個問題. 哎先吃飯吧
    誰叫"人是鐵飯是鋼呢".吃飯回來就開始在網上查資料找了半天沒的.看來只有靠自己了,打開JDOM的API文檔一個個方法往過看(E文我哭啊),最后終于找到了

    在Element類下有一個getContent(int index)方法
    public Content getContent(int index)其方法的意思是Returns the child at the given index.
    然后我又打開Content 類在其中找到getValue() 方法
    public abstract java.lang.String getValue()其方法的意思是Returns the XPath 1.0 string value of this child

    看到這我興奮了,不管三七二十一我就燒黃紙砍豬頭想和getContent兄和getValue兄結為兄弟. 我對你們的崇拜有如滔滔江山....................... 啊!跑題了
    從新更改過的代碼
    package com.xml;

    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    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;

    public class DuXMLTest2 {
        
    public void loadXMLdoc(){
            FileInputStream fi 
    = null;
            
    try {
                fi 
    = new FileInputStream("Test2.xml");
                SAXBuilder sb 
    = new SAXBuilder();
                
    try {
                    Document doc 
    = sb.build(fi);
                    Element root 
    = doc.getRootElement();
                    Namespace ns 
    = root.getNamespace();
                    List jiedian 
    = root.getChildren();
                    Element et 
    = (Element) jiedian.get(1);
                    
    //System.out.println(et.getName());
                    List zjiedian = et.getChildren();
                    
    int x = zjiedian.size();
                    
    //System.out.println(x);
                    String value[] = new String[x];
                    Element xet 
    = null;
                    
    for(int i=0;i<jiedian.size()-1;i++){
                        xet 
    = (Element) jiedian.get(i+1);
                        
    //System.out.println(xet.getName());
                        for(int j=0;j<zjiedian.size();j++){
                            value[j]
    =xet.getContent(j).getValue();
                            System.out.print(value[j]);
                        }

                    }

                }
     catch (JDOMException e) {
                    
    // TODO 自動生成 catch 塊
                    e.printStackTrace();
                }
     catch (IOException e) {
                    
    // TODO 自動生成 catch 塊
                    e.printStackTrace();
                }

            }
     catch (FileNotFoundException e) {
                
    // TODO 自動生成 catch 塊
                e.printStackTrace();
            }

        }

        
    public static void main(String[] args){
            DuXMLTest2 dt 
    = new DuXMLTest2();
            dt.loadXMLdoc();
        }

    }


    評論

    # re: JDOM解析這樣的XML文件  回復  更多評論   

    2007-08-07 21:52 by linjx2000
    文章寫太復雜了, jdom本來不需要那么復雜, 是你自己把他搞復雜了!
    for(int i=0;i<jiedian.size()-1;i++){
    xet = (Element) jiedian.get(i+1);
    //System.out.println(xet.getName());
    for(int j=0;j<zjiedian.size();j++){
    value[j]=xet.getContent(j).getValue();
    System.out.print(value[j]);
    }
    }

    這段代碼, 換成
    for (int i = 0; i < jd2.size(); i++) {
    xet = (Element) jd2.get(i);
    value[i] =xet.getText();
    }
    就可以獲得需要的四個column屬性值了,你寫的還會有問題!

    交流請加入群: 37998636

    # re: JDOM解析這樣的XML文件  回復  更多評論   

    2007-08-07 21:59 by linjx2000
    不好意思,

    換成的代碼里面,jd2----按你代碼的樣子應該改成--->zjiedian


    交流請加入群: 37998636(JavaStudy)


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


    網站導航:
     
    主站蜘蛛池模板: 四虎国产精品成人免费久久 | 久久亚洲国产午夜精品理论片| 国产福利免费视频 | 欧美日韩国产免费一区二区三区| 亚洲成a人片在线不卡一二三区| 免费一级成人毛片| 男女午夜24式免费视频| 中文字幕精品三区无码亚洲| 亚洲精品黄色视频在线观看免费资源| 免费视频精品一区二区三区| 亚洲码和欧洲码一码二码三码| 亚洲欧洲无码一区二区三区| 亚洲国产综合精品中文字幕| 99国产精品视频免费观看| 亚洲国产欧洲综合997久久| 国产A在亚洲线播放| 国产男女性潮高清免费网站 | 成人性生交视频免费观看| 国产成人无码免费看片软件| 亚洲AV无码久久久久网站蜜桃| 久久久久国产成人精品亚洲午夜| 国产精品亚洲精品日韩电影| 亚洲国产美国国产综合一区二区 | 日本亚洲国产一区二区三区| 黄页免费的网站勿入免费直接进入| 成人福利在线观看免费视频| 亚洲影视自拍揄拍愉拍| 在线观看视频免费完整版 | 暖暖在线视频免费视频| 亚洲AV永久无码天堂影院| 麻豆亚洲av熟女国产一区二| 91老湿机福利免费体验| 一级黄色毛片免费看| 亚洲人成网站免费播放| 亚洲国产成人私人影院| 久久精品国产亚洲Aⅴ香蕉 | 亚洲最大成人网色香蕉| 亚洲AV无码一区二区乱子伦| 精品国产亚洲一区二区在线观看 | 亚洲深深色噜噜狠狠爱网站| 国产免费午夜a无码v视频|