我有以下XML
<data>
<name> James </name>
<age> 25 </age>
</data>
我尝试将名称设为ClassA
,将年龄设为ClassB
。
可以使用Diggester
执行此操作吗?
答案 0 :(得分:1)
如果你想获取XML值并将它们存储到一个类中,我可以建议两个选项。
SAXParser
JAXB
SAXParser
是一个XML解析器,它将通过回调方法为您提供数据。您现在可以确切地知道正在处理的标记,并从该标记中获取数据。
第二个是JAXB
Java Architecture for XML Binding
。
用于XML绑定的Java体系结构(JAXB)允许Java开发人员进行映射 Java类到XML表示。 JAXB提供两个主要功能: 能够将Java对象编组为XML和反向,即 将XML解组回Java对象中 --Wikipedia
现在剩下的是什么适合您的需求:)
答案 1 :(得分:0)
ClassA和ClassB的实例来自哪里?如果它们在您调用消化器之前存在,那么您可以使用自定义规则执行此操作,如下所示:
String xml = "<data>"
+ "<name>James</name>"
+ "<age>25</age>"
+ "</data>";
final ClassA ca = new ClassA();
final ClassB cb = new ClassB();
Digester digester = new Digester();
digester.addRule("data/name", new Rule() {
@Override
public void body(String namespace, String name, String text) throws Exception {
ca.setName(text);
}
});
digester.addRule("data/age", new Rule() {
@Override
public void body(String namespace, String name, String text) throws Exception {
cb.setAge(Integer.parseInt(text));
}
});
digester.parse(new StringReader(xml));
如果它们是由XML解析的其他部分创建的,则需要了解有关整体问题的更多信息。
干杯