1

我需要使用描述结构的 JAXB 解析 XML。例如,它可以是这样的:

<structure name="s1">
 <integer value="15" name="i1" />
 <structure name="s1_1">
   <string value="hello" />
 </structure>
</structure>

如您所见,结构可以嵌套。所以我的问题是:

  1. 在 Java 中表示这种结构的最佳实践是什么
  2. 如何使用 JAXB 解析它?

UPD:结构可以包含几个不同的项目(整数、字符串、浮点数、数组/等),我不能假设它的内容。我只知道可能的字段类型,但不知道它们的数量或顺序。

4

2 回答 2

0

怎么样:

class Structure
{
    String name;
    Integer value;
    Structure child;
    // or 
    Set<Structure> children;
}

使用 JAXB 进行解析几乎可以简化为在上面的类中使用 JAXB 工具并生成适当的存根/代理/任何东西并将适当的 XML 馈送到编组器中——在 SO 和其他地方有很多示例。

干杯,

于 2012-10-15T13:20:58.537 回答
0

创建类Structure。使用 JAXB 注释标记它:

@XmlRootElement(name = "structure")
public class Structure {
    @XmlElement(name = "integer")
    private IntegerValue integer;
    @XmlElement(name = "string")
    private StringValue string;

    // add default constructor, getters and setters
}

创建类IntegerValueStringValue包装 int 和 string 并使用@XmlAttribute.

现在您已准备好将它与 JAXB 一起使用。

这是一个如何将对象序列化为 XML 的示例:

Structure s = new Structure();
//...............
JAXBContext ctx = JAXBContext.newInstance("com.yourcompany.yourpackage");
ctx.createMarshaller().marshal(s, System.out);

反序列化使用Unmarshaller.

于 2012-10-15T13:21:42.197 回答