我有一个很长的 XML,如:
<Author>
<id></id>
<name></name>
<title></title>
<address></address>
....
</Author>
我之前使用 JAXB 来解析 XML。
JAXBContext.newInstance(Author.class);
还有我的 Author.java
@XmlRootElement(name = "Author")
public class Author {
private String id;
private String name;
private String title;
private String address;
...
}
它运行良好,但我不想每次都将整个 XML 解析为一个大的 Java bean。
所以,我想使用以下方式:
创建评论员.java
@XmlRootElement(name = "Author")
public class Commentator {
private String id;
private String name;
// setters, getters
}
创建 Analyst.java
@XmlRootElement(name = "Author")
public class Analyst {
private String title;
private String address;
// setters, getters
}
我写下面的代码来测试。
JAXBContext context = JAXBContext.newInstance(Analyst.class, Commentator.class);
Unmarshaller unmarshaller = context.createUnmarshaller();
String xml = "<Author> <id>1</id> <name>A</name> <title>B</title> <address>C</address></Author>";
Commentator obj = (Commentator) unmarshaller.unmarshal(new ByteArrayInputStream(xml.getBytes()));
System.out.println(obj);
它将打印正确的结果。
如果我想得到分析师。
Analyst a = (Analyst) unmarshaller.unmarshal(new ByteArrayInputStream(xml.getBytes()));
我会得到异常: java.lang.ClassCastException: com.xxx.Commentator cannot be cast to com.xxx.Analyst
我不确定这种方式对解析器是否正确。但我真的需要这样的功能。
侃侃尔雅
一只萌萌小番薯
相关分类