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

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

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

    竹里館→憶童年

    獨(dú)坐幽篁里,彈琴復(fù)長(zhǎng)嘯;深林人不知,明月來相照
    posts - 9, comments - 23, trackbacks - 0, articles - 0
       :: 首頁 :: 新隨筆 :: 聯(lián)系 ::  :: 管理

    JDOM解析這樣的XML文件

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

    這幾天在開發(fā)中遇到的問題
    XML文檔內(nèi)容

     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號(hào)   </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號(hào)   </column>
    15   </row>
    16</Result>

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

    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 自動(dòng)生成 catch 塊
                    e.printStackTrace();
                }
     catch (IOException e) {
                    
    // TODO 自動(dòng)生成 catch 塊
                    e.printStackTrace();
                }

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

        }

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

    }

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

    在Element類下有一個(gè)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兄結(jié)為兄弟. 我對(duì)你們的崇拜有如滔滔江山....................... 啊!跑題了
    從新更改過的代碼
    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 自動(dòng)生成 catch 塊
                    e.printStackTrace();
                }
     catch (IOException e) {
                    
    // TODO 自動(dòng)生成 catch 塊
                    e.printStackTrace();
                }

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

        }

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

    }


    評(píng)論

    # re: JDOM解析這樣的XML文件  回復(fù)  更多評(píng)論   

    2007-08-07 21:52 by linjx2000
    文章寫太復(fù)雜了, jdom本來不需要那么復(fù)雜, 是你自己把他搞復(fù)雜了!
    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();
    }
    就可以獲得需要的四個(gè)column屬性值了,你寫的還會(huì)有問題!

    交流請(qǐng)加入群: 37998636

    # re: JDOM解析這樣的XML文件  回復(fù)  更多評(píng)論   

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

    換成的代碼里面,jd2----按你代碼的樣子應(yīng)該改成--->zjiedian


    交流請(qǐng)加入群: 37998636(JavaStudy)


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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 免费一级特黄特色大片| 在线观看的免费网站| 精品97国产免费人成视频| 青青草97国产精品免费观看| 亚洲AV第一成肉网| 亚洲AV无码国产剧情| 精品无码专区亚洲| 女人裸身j部免费视频无遮挡| 91嫩草私人成人亚洲影院| 亚洲国产精品无码久久九九| 又黄又大又爽免费视频| 四虎影视在线永久免费观看| 亚洲AV无码成H人在线观看| 国产成人亚洲综合无码| 国产亚洲精品观看91在线| 久久精品国产精品亚洲蜜月| 亚洲av永久无码精品表情包| 亚洲成a人无码av波多野按摩| 在线视频免费观看爽爽爽| 久久久久国色AV免费看图片| 久久国产乱子免费精品| 最近2022中文字幕免费视频 | 内射无码专区久久亚洲| 亚洲av无码国产精品色在线看不卡 | 亚洲av无码国产精品色午夜字幕 | 成人毛片手机版免费看| 国产麻豆免费观看91| 国产精品成人免费福利| 处破痛哭A√18成年片免费| 国产jizzjizz免费视频| 亚洲中久无码永久在线观看同| 性做久久久久免费看| 国产精品亚洲mnbav网站| 亚洲Av无码精品色午夜| 亚洲毛片αv无线播放一区| 亚洲尹人九九大色香蕉网站 | 国产大片免费观看中文字幕| 超清首页国产亚洲丝袜| 亚洲国产综合久久天堂| 亚洲第一中文字幕| 一本色道久久88亚洲精品综合|