我接收XML響應如下:反序列化XML命名空間前綴是未定義
<response>
<item xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="java:com.someDomain.item">
<name>some name</disc-name>
<description>some description</disc-desc>
</item>
<item xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="java:com.someDomain.item">
<name>some name</disc-name>
<description>some description</disc-desc>
</item>
<otherValue>12.1</otherValue>
</response>
我的類被裝飾成這樣:
[XmlElement("item")]
public Item[] Items{get;set;}
[XmlElement("otherValue")
public string OtherValue{get;set;}
當我嘗試反序列化上面的XML到所描述的類,我收到「命名空間前綴'java'未定義」的錯誤。向類中添加「namespace」屬性可解決解析錯誤(但是,xml將從原始文件中失真)。
即
[XmlElement(ElementName="item",Namespace="java")]
我應該如何進行裝飾給定的屬性與一個新的命名空間相匹配?或者,我如何正確定義名稱空間?
我不是百分百使用股票數組作爲我的可枚舉部分,但我認爲命名空間問題目前需要謹慎。任何洞察力或想法非常感謝!
UPDATE:
我認爲現在的問題是更好的重新表述,我已經來回走了一點:
你如何使用XmlElementAttribute(或其他屬性)有一個類,它可以序列化到上面的項目片段,包括xsi標籤?
至於我的特殊問題,我已經意識到,由於Xml響應超出了我的控制範圍,所以我不需要xsi屬性開始。要解決此問題,系列化,我只是做了以下(XmlElement的元素包含原始文檔上方):
foreach(XmlNode node in element)
node.Attributes.RemoveAll();
我只注意到我個人的解決辦法,因爲這是不實際的解決方案。
這對我來說很有意義,並沒有將「java」列爲名稱空間。但是,在傳入Xml響應的反序列化中,我收到「名稱空間前綴'java'未定義」的錯誤。 – 2009-07-29 15:50:23