我正在使用JAXB从SOAP请求中反序列化xml元素,进行一些修改(例如,更新标签中的某些属性),然后对更新后的消息进行序列化。 问题是当我收到SOAP消息时,我具有“核心”前缀,但是在序列化JAXB之后,对于相同的名称空间,将“核心”前缀替换为“ ns2”
是否有一种方法可以让我在输入请求中收到原始名称空间前缀? 我不能在package-info.java中使用带有硬编码前缀的名称空间@XmlSchema,因为输入前缀可能与“ core”不同,并且序列化后我需要使用相同的名称空间前缀
原始
<PlacementRequest
xmlns="http://www.scte.org/schemas/130-3/2008a/adm"
xsi:schemaLocation="http://www.scte.org/schemas/130-3/SCTE_130-3_2008a.xsd"
messageId="00000000-0000-0000-0000-000000000000"
version="1.1"
identity="CHT_ADM_XXX"
system="ADM-CCOR"
xmlns:core="http://www.scte.org/schemas/130-2/2008a/core"
xmlns:xsi="http://www.w3.org/XMLSchema-instance">
<Entertainment>
<core:Content id="http://cdnassist.vod/http_client_file_transfer/fxm.com!MFXM1021874420170601">
<core:AssetRef assetID="ASST0000000000000000" providerID="provider.com"/>
<core:Ext>
<TargetCode key="rating">TV-MA</TargetCode>
</core:Ext>
</core:Content>
</Entertainment>
<Client>
<core:CurrentDateTime>2018-01-01T00:00:00.000-05:00</core:CurrentDateTime>
</Client>
</PlacementRequest>
由JAXB序列化(http://www.scte.org/schemas/130-3/2008a/adm名称空间为“ ns2”,但我希望为“核心”)
<PlacementRequest
xmlns="http://www.scte.org/schemas/130-3/2008a/adm"
xsi:schemaLocation="http://www.scte.org/schemas/130-3/SCTE_130-3_2008a.xsd"
messageId="00000000-0000-0000-0000-000000000000"
version="1.1"
identity="CHT_ADM_XXX"
system="ADM-CCOR"
xmlns:ns2="http://www.scte.org/schemas/130-2/2008a/core"
xmlns:xsi="http://www.w3.org/XMLSchema-instance"
>
<Entertainment>
<ns2:Content id="http://cdnassist.vod/http_client_file_transfer/fxm.com!MFXM1021874420170601">
<ns2:AssetRef providerID="provider.com" assetID="ASST0000000000000000"/>
<ns2:Ext>
<TargetCode key="rating">TV-MA</TargetCode>
</ns2:Ext>
</ns2:Content>
</Entertainment>
<Client>
<ns2:CurrentDateTime>2018-01-01T00:00:00.000-05:00</ns2:CurrentDateTime>
</Client>
</PlacementRequest>