2017-03-09 14 views
-1

XMLファイルを配列リストに変換する必要がありますが、どのようにすればよいか分かりません。 これは私のXMLファイルの様子です。XMLファイルをArrayListに変換する方法

<?xml version="1.0" encoding="UTF-8" standalone="true"?> 
<data> 
    <record> 
     <name> abc </name> 
     <email> [email protected] </email> 
    </record> 
    <record> 
     <name> asd </name> 
     <email> [email protected] </email> 
    </record> 
     . 
     . 
     . 
</data> 

そのように見えるContactクラスで建てマイ配列リスト、:

public class Contact{ 
    public String name; 
    public String email; 
    public Contact(String name,String email){ 
     this.name=name; 
     this.email=email; 
    } 
    public boolean contains(String str){ 
     return name.contains(str)|| email.contains(str); 
    } 
    @Override 
    public String toString() { 
     return name+"\n"+email; 
    } 
} 
+0

正確に何か問題がありますか? –

答えて

0

これは実際に行った方法です。 これは将来のある人に役立つかもしれません。

private ArrayList<Contact> parse() throws XmlPullParserException,IOException 
{ 
    XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); 
    factory.setNamespaceAware(true); 
    XmlPullParser parser = factory.newPullParser(); 

    AssetManager assetManager = getAssets(); 
    parser.setInput(getAssets().open("myxml.xml"),null); 

    ArrayList<Contact> Contacts = null; 
    int eventType = parser.getEventType(); 
    Contact con = null; 

    while (eventType != XmlPullParser.END_DOCUMENT){ 
     String name; 
     switch (eventType){ 
      case XmlPullParser.START_DOCUMENT: 
       Contacts = new ArrayList(); 
       break; 
      case XmlPullParser.START_TAG: 
       name = parser.getName(); 
       if (name.equals("record")) 
        con = new Contact(); 
       else if (con != null){ 
        if (name.equals("name")) 
         con.name = parser.nextText(); 
        else if (name.equals("email")) 
         con.email= parser.nextText(); 
       } 
       break; 
      case XmlPullParser.END_TAG: 
       name = parser.getName(); 
       if (name.equalsIgnoreCase("record") && con != null) 
        Contacts.add(con); 
     } 
     eventType = parser.next(); 
    } 

    return Contacts; 

}` 
1

あなたはJavaオブジェクト

<?xml version="1.0" encoding="UTF-8"  standalone="true"?> 
<Question> 

    <id>1</id> 

<Question> 
....  
..... 

質問にXMLを変換するためにJAXB ... Unmarshlingを使用することができます。 java

import javax.xml.bind.annotation.XmlAttribute; 
import javax.xml.bind.annotation.XmlElement; 
import javax.xml.bind.annotation.XmlRootElement; 

    @XmlRootElement 
    public class Question { 
    private int id; 

    @XmlAttribute 
    public int getId() { 
    return id; 
    } 

    public void setId(int id) { 
    this.id = id; 
    } 
} 

メインメソッド

try { 
    File file = new File("question.xml"); 
    JAXBContext jaxbContext = JAXBContext.newInstance(Question.class); 

    Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller(); 
    Question que= (Question) jaxbUnmarshaller.unmarshal(file); 

    System.out.println(que.getId()); 
    System.out.println("Answers:"); 
    List<Answer> list=que.getAnswers(); 
    for(Answer ans:list) 
     System.out.println(ans.getId()); 

    } catch (JAXBException e) { 
    e.printStackTrace(); 
    } 

XMLドキュメントをJavaオブジェクトに変換する手順。

1.Create POJO or bind the schema and generate the classes. 
    2.Create the JAXBContext object. 
    3.Create the Unmarshaller objects. 
    4.Call the unmarshal method. 
    5.Use getter methods of POJO to access the data. 
関連する問題