4

我有一个 CRM 实体 XML 消息,如下所示:

<c:KeyValuePairOfstringanyType xmlns:c="ns1" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"  >
....
 <c:value i:type="**b:AliasedValue**" **xmlns:b="ns3"**>
 SomethingHere...
 </c:value>
</c:KeyValuePairOfstringanyType>

然后我将它反序列化为一个对象并序列化回
我得到的 xml

<c:KeyValuePairOfstringanyType xmlns:c="ns1" xmlns:i="http://www.w3.org/2001/XMLSchema-   instance"  >
 <c:value i:type="b:AliasedValue" >
 SomethingHere...
</c:value>
</c:KeyValuePairOfstringanyType>

我失去了 xmlns:b 定义。知道为什么吗?

4

1 回答 1

0

四十二是正确的:属性值不带有任何默认语义,因此 xml 处理器无法识别名称空间的使用。

如果您希望b在您的 -attribute 中引用一些 -data,您i:type可以使用映射元素c:value与 (hypothesized)关联b:value,即:

<mapping xml:id="idXY'/>
...
<c:value c:ref="idXY">...</c:value>
...
<b:value b:ref="idXY">...</b:value>
...

...您将_:ref在相应的 xml 模式中声明为 IDREF 属性。您可能需要调整 1:n-/m:n - 映射的设计,例如将引用者作为_:value.

最好的问候,卡斯滕

于 2013-01-17T09:59:13.120 回答