2012-11-30 94 views
4

我有一個CRM實體XML信息如下: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

只是一個猜測(但有些受過教育),但「B」的命名空間實際上並不在一個元素中使用,就像在屬性的值。不要太瞭解.net XML庫,但應該有一個選項不去除「未使用」的命名空間 –

回答

0

42是正確的:屬性值不帶任何默認語義,所以命名空間的用法不被xml處理器識別。

如果你想參考一些b - 數據在你i:type -attribute,你我使用mapping元素c:value用(假設)b:value相關聯,即:

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

...你哪裏將在相應的xml模式中聲明_:ref作爲IDREF屬性。你可能必須調整設計爲1:n-/m:n - 映射,例如通過讓推薦人成爲_:value的子元素。

最好的問候,卡斯滕