xstream:仅解析子元素

时间:2015-04-20 13:27:08

标签: java xstream

我有以下xml

<root>
<child-1>
</child-1>
<child-2>
   <subchild-21>
   </subchild-22>
</child-2>
</root>

我的要求是我只想解析child-2。我不知道root和child-1。

是否可以使用xstream,因为我找不到忽略root的方法。

2 个答案:

答案 0 :(得分:1)

根据您的要求,有几种方法可以使用。

如果你知道要解析的类的名称(这里是child-2),你可以在XML中查找<child-2></child-2>条目,将它们与中间的内容一起复制到一个新的临时XML文件(您可以使用标准File类中的createTempFile()创建临时文件)。这就是我建议的方式。

如果你想在不知道名字的情况下取出child-2实例,但你知道周围类的名称,你可以模拟他们的类,即创建同名的类,但没有他们的特定内容。在您的示例中没有内容(可能在导出时被忽略),但在模拟类中使用相同的成员数据以使导入成功非常重要。 (除非您使用Philipi Willemann所述的ignoreUnknownElements()

当然,如果您是创建XML的人,那么您应该首先只能导出子2实例。

答案 1 :(得分:0)

如果您知道根名称,则可以创建一个简单类,其中包含已映射到child-2的类的属性:

@XStreamAlias("root")
class Root {
    @XStreamAlias("child-2")
    private Child2 child;

    //get and set
}

然后,在处理XML时,您可以将XStream设置为忽略xstream.ignoreUnknownElements();

的未知元素