0

1 つの要素に対して jsoup を使用して、xml コンテンツからタグを正常に抽出しました。

  class Post {

    private String a;
    private String b;


    public void setA (String a){
           this.a = a;

    }


    public void setB(String b){
           this.b =b;

    }

    public String getA(){

    return a;
    }

    public String getB(){

    return b;
    }

   } 

配列リストを使用して

public ArrayList<Post> PostList = new ArrayList<Post>();

では、jsoup を使用して ab の値を別のインデックスに保存するにはどうすればよいでしょうか。私は単一のタグを抽出します

Document doc = Jsoup.parse(soap_xml_content);

Element element1 = doc.select("a");
Element element2 = doc.select("b");
Element compte = doc.select("comptes");

String value_a = element1.text();
String value_b = element2.text();

Post currentPost = new Post();

それぞれについてcompte、要素 a と b を Post クラスに設定し、メソッド get を使用してアクセスしたいと考えています。

for( Element element : compte ){

                System.out.println(": "+element);
                currentPost.setA(element);
                            currentPost.setB(element);
                            Poslist.add(currentPost);
                            currentPost = new Post();
            }

間違っていることはわかっていますが、この手順を実行する方法がわかりません。助けてください。


XML:

<soap:Envelope xmlns:soap="schemas.xmlsoap.org/soap/envelope/"> 
    <soap:Body> 
        <liste> 
            <comptes> 
                <a>pen drive</a> 
                <b>jsoup</b> 
            </comptes> 
            <comptes> 
                <a>pen drive</a> 
                <b>jsoup</b> 
            </comptes> 
            <comptes> 
                <a>pen drive</a> 
                <b>jsoup</b> 
            </comptes> 
        </liste> 
    </soap:Body> 
</soap:Envelope>



04-04 10:39:25.535: E/AndroidRuntime(2532): FATAL EXCEPTION: AsyncTask #1
04-04 10:39:25.535: E/AndroidRuntime(2532): java.lang.RuntimeException: An error occured while executing doInBackground()
04-04 10:39:25.535: E/AndroidRuntime(2532):     at android.os.AsyncTask$3.done(AsyncTask.java:200)
04-04 10:39:25.535: E/AndroidRuntime(2532):     at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:274)
04-04 10:39:25.535: E/AndroidRuntime(2532):     at java.util.concurrent.FutureTask.setException(FutureTask.java:125)
04-04 10:39:25.535: E/AndroidRuntime(2532):     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:308)
04-04 10:39:25.535: E/AndroidRuntime(2532):     at java.util.concurrent.FutureTask.run(FutureTask.java:138)
04-04 10:39:25.535: E/AndroidRuntime(2532):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
04-04 10:39:25.535: E/AndroidRuntime(2532):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
04-04 10:39:25.535: E/AndroidRuntime(2532):     at java.lang.Thread.run(Thread.java:1019)
04-04 10:39:25.535: E/AndroidRuntime(2532): Caused by: java.lang.NullPointerException: null format argument
04-04 10:39:25.535: E/AndroidRuntime(2532):     at java.lang.String.format(String.java:2173)
04-04 10:39:25.535: E/AndroidRuntime(2532):     at java.lang.String.format(String.java:2151)
04-04 10:39:25.535: E/AndroidRuntime(2532):     at .Convertor$loadingTask.doInBackground(Convertor.java:201)
04-04 10:39:25.535: E/AndroidRuntime(2532):     at .Convertor$loadingTask.doInBackground(Convertor.java:1)
04-04 10:39:25.535: E/AndroidRuntime(2532):     at android.os.AsyncTask$2.call(AsyncTask.java:185)
04-04 10:39:25.535: E/AndroidRuntime(2532):     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
04-04 10:39:25.535: E/AndroidRuntime(2532):     ... 4 more
4

1 に答える 1

0

Post クラス public Post(A,B) でコンストラクターを作成する

public Post(String a, String b){
 this.a =a;
 this.b =b;

}

と:

for( Element element : compte ){

    System.out.println(": "+element);

    Poslist.add(new Post(ElementA,ElementB));

}

上記のソリューションでセッターを使用することはありません。タイプ Post の ArrayList にクラスのオブジェクトを追加しているだけです。get メソッドを使用するには、次のようにします。

String A = Poslist.get(YOUR_POSTION).getA();
String B = Poslist.get(YOUR_POSTION).getB();
于 2013-04-04T06:05:34.087 に答える