2012-05-09 3 views
3

У меня есть одно требование получить данные из xml.Анализ xml данных в java

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> 

я должен получить идентификатор и первое имя и фамилию-имя из этих данных и должен храниться в, первой-фамилии, имя-переменного ид

как получить доступ xml, чтобы получить эти детали.

ответ

5

Вы можете использовать JAXB (JSR-222) и выполните следующие действия. Реализация входит в Java SE 6.

Demo

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 ... мне нужны только указанные выше значения ... – user533

+0

приведенные выше данные xml - это только response.getBody() – user533

+0

Для извлечения трех значений необходимо проанализировать t он XML и затем перемещается между различными узлами для их получения. –