我正在开发一个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());
答案 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)
请完成上述链接中提供的演示,您的问题将得到解决 我希望这会有所帮助。
答案 3 :(得分:-2)
您可以使用JSON解析器而不是XML。使用Java和Javascript编写代码都很容易。