如何在Android中将XML映射到JAVA模型

时间:2014-12-09 09:45:31

标签: android xml

我正在开发一个Android应用程序,我有一些来自HttpResponce的XML格式的数据。我想将该数据映射到Java模型中。有没有采用Java对象和XML数据并将XML数据转换为Java模型的常用方法。因为每次获取不同Web服务的XML时,我都需要编写解析代码。

以下用于Java的代码,是否有适用于Android的代码?

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()+" "+que.getQuestionname());  
System.out.println("Answers:");  
List<Answer> list=que.getAnswers();  
for(Answer ans:list)  
   System.out.println(ans.getId()+" "+ans.getAnswername()+"  "+ans.getPostedby());  

4 个答案:

答案 0 :(得分:1)

您可以使用&#34; Simple Xml Serialization&#34;。

答案 1 :(得分:1)

您可以使用gson-xml进行XML反序列化。它有很好的文档记录,并有一些你可以通过的例子。

用法:

public static class SimpleModel {
  private String name;
  private String description;

  public String getName() { return name; }
  public String getDescription() { return description; }
}


public void simpleTest() {

  XmlParserCreator parserCreator = new XmlParserCreator() {
    @Override
    public XmlPullParser createParser() {
      try {
        return XmlPullParserFactory.newInstance().newPullParser();
      } catch (Exception e) {
        throw new RuntimeException(e);
      }
    }
  };

  GsonXml gsonXml = new GsonXmlBuilder()
     .setXmlParserCreator(parserCreator)
     .create();

  String xml = "<model><name>my name</name><description>my description</description></model>";
  SimpleModel model = gsonXml.fromXml(xml, SimpleModel.class);

  assertEquals("my name", model.getName());
  assertEquals("my description", model.getDescription());
}

使用@SerializedName注释来处理标记属性和文本节点。

为了说明,这个XML:

<person dob="01.01.1973" gender="male">
  <name>John</name>
  Likes traveling.
  </person>

可以映射到POJO:

public class Person {

  @SerializedName("@dob")
  private String dob;

  @SerializedName("@gender")
  private String gender;

  private String name;

  @SerializedName("$")
  private String description;

  // ...
}

答案 2 :(得分:0)

这是一个很好的将XML映射到POJO (Plain Old Java Object)

的教程

http://www.jameselsey.co.uk/blogs/techblog/android-or-standard-java-mapping-your-xml-onto-pojos-easily-and-vice-versa/

请完成上述链接中提供的演示,您的问题将得到解决 我希望这会有所帮助。

答案 3 :(得分:-2)

您可以使用JSON解析器而不是XML。使用Java和Javascript编写代码都很容易。