XML序列化丢失名称空间

时间:2012-11-30 18:46:07

标签: .net xml serialization deserialization

我有一个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的定义。 知道为什么吗?

1 个答案:

答案 0 :(得分:0)

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

如果您想引用b - 属性中的某些i:type - 数据,我使用映射元素将c:value与(假设的)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的子元素。

最好的问候,carsten