2012-05-09 112 views
3

我有一個要求從XML獲取數據。解析java中的xml數據

String 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和第一-name和last-name,且存儲在變量ID,第一姓,名

如何訪問XML獲取這些細節。

回答

5

看一個例子你可以使用JAXB(JSR-222),並做到以下幾點。一個實現包含在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文件中。當我做了靜態類的人,它顯示錯誤.. – user533

+0

@PratapMurukutla - 上面的代碼是複製並粘貼從我的Java編輯。您是否在修改後的版本中看到異常? –

2

你可以這樣開始:

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

可以在http://www.java2s.com/Code/Java/XML/XMLDocumentinformationbyDOM.htm

+0

其實我得到的XML結果從一個URL的響應,我可以得到整個XML格式的響應...我只需要上面的3個值... – user533

+0

上面的XML數據只是response.getBody() – user533

+0

要檢索三個值需要解析t他XML然後在不同節點之間移動以獲取它們。 –