如何在同一元素上使用多個@XStreamAlias註釋。當我這樣做:對同一元素使用多個@XStreamAlias註釋
@XStreamAlias("alias1")
@XStreamAlias("alias2")
class ABC{
//
}
我得到編譯錯誤。有什麼辦法可以做到這一點?
如何在同一元素上使用多個@XStreamAlias註釋。當我這樣做:對同一元素使用多個@XStreamAlias註釋
@XStreamAlias("alias1")
@XStreamAlias("alias2")
class ABC{
//
}
我得到編譯錯誤。有什麼辦法可以做到這一點?
這裏例如用編程的方式:
import java.io.InputStream;
import java.util.List;
import org.junit.Test;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
import lombok.Data;
public class MultiAlias {
@Test
public void smokeTest() {
InputStream file = MultiAlias.class.getResourceAsStream("MultiAliasTest.xml");
XStream xStream = new XStream();
xStream.ignoreUnknownElements();
xStream.processAnnotations(Parent.class);
xStream.alias("child", Child.class);
xStream.alias("kind", Child.class);
Parent parent = (Parent) xStream.fromXML(file);
System.out.println(parent);
}
@XStreamAlias("parent")
@Data
public class Parent {
@XStreamAsAttribute
private String name;
private List<Child> children;
}
@Data
public class Child {
private String name;
}
}
XML:
<?xml version="1.0" encoding="UTF-8"?>
<parent name="Adam">
<age>33</age>
<children>
<child>
<name>Iva</name>
</child>
<kind>
<name>Peter</name>
</kind>
</children>
</parent>
輸出:
MultiAlias.Parent(name=Adam, children=[MultiAlias.Child(name=Iva), MultiAlias.Child(name=Peter)])
我認爲,馬克說,這是不可能用註解(在網上找不到任何東西)。 在我的特殊情況下,作爲散步的周圍,我所做的是從基類(Vivek示例中的ABC)擴展並將它們自己的註釋放在子類中並使用這些類。解決方案取決於你的代碼實現。 Regards.-
ABC類
@XStreamAlias( 「alias1」) DFG延伸ABC
@XStreamAlias( 「別名2」) XYZ延伸ABC
我認爲是不可能的註釋,但你可以通過XStream初始化來實現別名註冊:'xStream.alias(「alias1」,ABC.class);' – Mark
但是如果我必須多次解析xml,那麼我必須對每個實例多次使用它的XStream。任何其他方式? –
「解析xml多次」是什麼意思? – Mark