C#XmlSerializer的XmlInclude在Java中等效 - c#

我正在寻找一个Java注释,它与Cml中的XmlInclude一样。

我在套接字上获得了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类定义如下:

@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和其他已知类声明一个字符串。 Java中有类似的东西吗?

参考方案

类型为Object的属性上的@XmlElement是正确的映射:

@XmlElement(name="AnswerObject")
public Object getAnswerObject() { return this.m_answerObject; }
public void setAnswerObject(Object _answerObject) { this.m_answerObject = _answerObject;}

您需要确保JAXBContext知道AnswerObject的所有可能值。创建JAXBContext时,可以使其属于以下类:

JAXBContext.newInstance(Answer.class, ValueA.class, ValueB.class);

或通过@XmlSeeAlso注释指定它们。

@XmlRootElement(name="Answer")
@XmlType(propOrder = {"functionReturnCode", "answerObject"})
@XmlSeeAlso{{ValueA.class, ValueB.class}
public class Answer 
{
    ...
}

当我运行python代码时,它说“ <<目前是意外情况” - python

基本上,这是我们合作者的python代码,用于生成网格,该网格是在Linux环境下开发的。我使用Cygwin在Windows上运行此代码。麻烦部分如下。 BiV_temp.geo也是一个python脚本。因此,命令是用预定义的数字和文件名替换脚本BiV_temp.geo中的字符串。os.system('cp BiV_fiber.geo BiV_te…

当回复有时是一个对象有时是一个数组时,如何在使用改造时解析JSON回复? - java

我正在使用Retrofit来获取JSON答复。这是我实施的一部分-@GET("/api/report/list") Observable<Bills> listBill(@Query("employee_id") String employeeID); 而条例草案类是-public static class…

改造正在返回一个空的响应主体 - java

我正在尝试使用Retrofit和Gson解析一些JSON。但是,我得到的响应机构是空的。当我尝试从对象中打印信息时,出现NullPointerException。我确保URL正确,并且我也确保POJO也正确。我正在使用jsonschema2pojo来帮助创建POJO类。这是我要解析的JSON{ "?xml": { "@versi…

使用javascript在客户端的列表视图中选择所有复选框 - javascript

我有一个列表视图,在标题中有一个复选框。如果标题复选框已选中/未选中,我想选择行中的所有复选框。如何在客户端实现此目标?这是ListView设计代码。<asp:ListView ID="lvTypes" runat="server" GroupPlaceholderID="groupPlaceHolde…

将值设置为无法与jQuery一起使用的隐藏字段 - javascript

我有一个使用Visual Studio 2013创建的应用程序,但是在使用jQuery向隐藏字段分配值时遇到了一些问题。首先,我要为隐藏变量分配一个值,因为我无法直接访问.cs文件中标签的文本值,因此我必须将标签的值分配给隐藏的输入字段才能访问在.cs文件中。我希望这是有道理的。这是我在.aspx文件中的隐藏输入字段: <input type=…