2012-05-09 11 views
3

xmlからデータを取得する要件が1つあります。xmlデータをjavaで解析する

文字列res;

データは次のように文字列resになります。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<person> 
    <id>QZhx_w1eEJ</id> 
    <first-name>pratap</first-name> 
    <last-name>murukutla</last-name> 
</person> 

私は、このデータからIDとファーストネームとラスト・ネームを取得する必要がありますし、変数のID、最初の名前、最後の名前に格納する必要があり

アクセスする方法それらの詳細を取得するxml。

答えて

5

の例を見ることができます

ByteArrayInputStream inputStream = 
    new ByteArrayInputStream(response.getBody().getBytes("UTF-8")); 
DocumentBuilder builder = DocumentBuilderFactory.newInstance() 
    .newDocumentBuilder(); 
Document doc = builder.parse(new InputSource(inputStream)); 

。実装は、Java SE 6

デモ

package forum10520757; 

import java.io.StringReader; 
import javax.xml.bind.*; 
import javax.xml.bind.annotation.*; 

public class Demo { 

    public static void main(String[] args) throws Exception { 
     JAXBContext jc = JAXBContext.newInstance(Person.class); 

     Unmarshaller unmarshaller = jc.createUnmarshaller(); 
     StringReader xml = new StringReader("<person><id>QZhx_w1eEJ</id><first-name>pratap</first-name><last-name>murukutla</last-name></person>"); 
     Person person = (Person) unmarshaller.unmarshal(xml); 

     System.out.println(person.id); 
     System.out.println(person.firstName); 
     System.out.println(person.lastName); 
    } 

    @XmlRootElement 
    @XmlAccessorType(XmlAccessType.FIELD) 
    static class Person { 
     String id; 

     @XmlElement(name="first-name") 
     String firstName; 

     @XmlElement(name="last-name") 
     String lastName; 
    } 

} 

出力

QZhx_w1eEJ 
pratap 
murukutla 
+1

私はこのようにしたでしょう! – Neel

+0

助けていただきありがとうございます。しかし、これは私の大きなJavaファイルの1つで簡単な作業です。静的クラスの人がエラーを表示しています。 – user533

+0

@PratapMurukutla - 上記のコードはJavaからコピー&ペーストされています編集者。変更されたバージョンで例外が発生していますか? –

2

あなたはで始めることができます:あなたはJAXB(JSR-222)を使用すると、以下のことを行うことができhttp://www.java2s.com/Code/Java/XML/XMLDocumentinformationbyDOM.htm

+0

実際に私は1つのURLからの応答としてXML結果を取得していますし、私は全体を取得することができますに含まれていますxml形式の応答...私は上記の3つの値だけを必要とします... – user533

+0

上記のxmlデータはresponse.getBody()です – user533

+0

3つの値を取得するには、彼はXMLを取得し、次に異なるノード間を移動してそれらを取得します。 –