0

我有以下 XML

<data>
  <name> James </name>
  <age> 25 </age>
</data>

我尝试将名称设置为 aClassA并将年龄设置为 other ClassB

有可能这样做Diggester吗?

4

2 回答 2

1

如果您想获取 XML 值并将它们存储到一个类中,我可以建议两个选项。

  1. SAXParser
  2. JAXB

SAXParser是一个 XML 解析器,它将通过回调方法为您提供数据。您可以确切地知道现在正在处理什么标签并从该标签中获取数据。

二是JAXB即是Java Architecture for XML Binding

XML 绑定的 Java 体系结构 (JAXB) 允许 Java 开发人员将 Java 类映射到 XML 表示。JAXB 提供了两个主要特性:将 Java 对象编组为 XML 的能力和相反的能力,即将 XML 解组回 Java 对象
--Wikipedia

现在剩下的是适合您的需求:)

于 2013-10-09T19:03:54.000 回答
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 解析的其他部分创建的,则需要更多地了解整体问题。

干杯

于 2015-02-17T08:12:09.827 回答