我正在开发一个使用Spring MVC的REST API。我使用和生成的对象是从NCPDP(http://www.ncpdp.org/)XSD生成的(使用JAXB)。我有一切工作时请求进来,但我想添加额外的属性到传出请求的根元素。如何在JAXB生成类时向根元素添加属性?
现在,我的传出响应如下所示:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<transport:Message xmlns:transport="http://www.ncpdp.org/schema/transport">
<transport:Header>
...
</transport:Header>
<transport:Body>
<transport:Status>
<transport:Code>010</transport:Code>
<transport:Description>OK</transport:Description>
</transport:Status>
</transport:Body>
</transport:Message>
它应该如下所示:
<?xml version="1.0"?>
<transport:Message xmlns:transport="http://www.ncpdp.org/schema/transport" xmlns:datatypes="http://www.ncpdp.org/schema/datatypes"
xmlns:script="http://www.ncpdp.org/schema/script" xmlns:structures="http://www.ncpdp.org/schema/structures"
xmlns:pa-structures="http://www.ncpdp.org/schema/pa-structures" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
StructuresVersion="v2014041" ECLVersion="v2014041" DatatypesVersion="v2014041" PA-StructuresVersion="v2014041"
TransactionVersion="v2014041" TransportVersion="v2014041" TransactionDomain="SCRIPT">
<transport:Header>
...
</transport:Header>
<transport:Body>
<transport:Status>
<transport:Code>010</transport:Code>
</transport:Status>
</transport:Body>
</transport:Message>
我不认为我需要定义的所有命名空间(因为他们”不用),但我确实需要StructuresVersion和所有其他属性。有没有办法修改我的bindings.xjb以包含这些属性?或者我必须将生成的代码复制到我的源代码树中并添加注释来执行此操作?
感谢,
马特
您的模式是否声明了这些属性?请发布声明'transport:Message'的模式片段。 – lexicore 2014-10-17 18:31:47
是的,它的确如此。在发布这个问题之前,我从来没有打扰过。对不起,浪费你的时间。 – 2014-10-17 19:01:22
没问题,发生这种情况。为了避免误导新用户,我会将其作为答案发布。 – lexicore 2014-10-17 19:04:11