我有以下 XML
<data>
<name> James </name>
<age> 25 </age>
</data>
我尝试将名称设置为 aClassA
并将年龄设置为 other ClassB
。
有可能这样做Diggester
吗?
我有以下 XML
<data>
<name> James </name>
<age> 25 </age>
</data>
我尝试将名称设置为 aClassA
并将年龄设置为 other ClassB
。
有可能这样做Diggester
吗?
如果您想获取 XML 值并将它们存储到一个类中,我可以建议两个选项。
SAXParser
JAXB
SAXParser
是一个 XML 解析器,它将通过回调方法为您提供数据。您可以确切地知道现在正在处理什么标签并从该标签中获取数据。
二是JAXB
即是Java Architecture for XML Binding
。
XML 绑定的 Java 体系结构 (JAXB) 允许 Java 开发人员将 Java 类映射到 XML 表示。JAXB 提供了两个主要特性:将 Java 对象编组为 XML 的能力和相反的能力,即将 XML 解组回 Java 对象
--Wikipedia
现在剩下的是适合您的需求:)
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 解析的其他部分创建的,则需要更多地了解整体问题。
干杯