0

我正在使用 xstream 来解析 XML,一切顺利,而.... 有一种情况 xstream 似乎无法处理。

有一个名为“”的标签,但在不同的xml文件中,它可以包含文本节点或其他XML标签。

它可以是这样的:

XML File 1:
<Spec> text Node Here </Spec>

XML File 2:
<Spec Id="1">
    <Tag1>value</Tag1>
    <Tag2>value</Tag2>
</Spec>

在 Spec 类中,我有这个代码......

@XStreamAlias("Spec")
@XStreamConverter(value = ToAttributedValueConverter.class, strings = { "spec" })   //when Text Node
public class Spec
{
    String spec;        // text Node

    @XStreamAlias("Id")
    @XStreamAsAttribute
    String id;

    @XStreamAlias("Tag1")
    String tag1;

    @XStreamAlias("Tag2")
    String tag2;
    // getter and setter...
}

在 XML 文件 1 的情况下,它工作正常,但在 XML 文件 2 的情况下,字段“tag1”和“tag2”的值为空,字段“spec”的值类似于:“\n\t\t”

我能做些什么来处理这两个文件?提前致谢!

4

1 回答 1

0

是的,我已经解决了这个问题......但不是很好。

将 Spec 类拆分为 2 个类:一个用于文本节点,另一个用于 xml 元素。

并在解析不同的 xml 文件时,使用 xstream.alias("Spec", Spec1.class); 和 xstream.alias("Spec", Spec2.class); 切换两种不同的格式。

于 2013-05-22T06:09:21.977 回答