我正在寻找与 C# 中的 XmlInclude 相同的 Java 注释。
我通过套接字获得了 XML 结构。结构如下所示:
<Answer xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<FunctionReturnCode>0</FunctionReturnCode>
<AnswerObject xsi:type="Status">
<DoorOpen>79</DoorOpen>
</AnswerObject>
</Answer>
对应的Java Class定义如下:
@XmlRootElement(name="Answer")
@XmlType(propOrder = {"functionReturnCode", "answerObject"})
public class Answer
{
private Object m_answerObject = null;
private long m_uiFunctionReturnCode = 0;
@XmlElement(name="FunctionReturnCode")
public long getFunctionReturnCode(){ return this.m_uiFunctionReturnCode; }
public void setFunctionReturnCode(long _uiFunctionReturnCode) { this.m_uiFunctionReturnCode = _uiFunctionReturnCode; }
@XmlElement(name="AnswerObject")
public Object getAnswerObject() { return this.m_answerObject; }
public void setAnswerObject(Object _answerObject) { this.m_answerObject = _answerObject;}
}
在 C# 中,该类看起来像这样:
[XmlInclude(typeof(SelStatus))]
<<< 在我看来,这似乎是公共课的魔力答案:ICloneable
{
private uint m_uiFunctionReturnCode = 0;
private object m_answerObject = null;
.....Setters/Getters here as well
}
问题是,“AnswerObject”可以是任何类型的对象。在我的示例中,“AnswerObject”是“Status”类型的对象,但它也可以是字符串或其他任何类型的对象。
在 C# 中,我可以使用 XmlSerializer 反序列化 XML 结构。在 Java 中,我使用以下内容:
JAXBContext context = JAXBContext.newInstance(Answer.class);
Unmarshaller unmarschaller = context.createUnmarshaller();
C# 和 Java(以及)自动处理字符串。但是在有另一个对象的情况下,我可以用 XmlInclude 其他已知类来宣布 C#。Java中有类似的东西吗?