2011-12-30 46 views
0

我有以下XML反序列化:一個場XML不能使用的XmlSerializer

<?xml version="1.0" encoding="UTF-8"?> 
<connection_state>conn_state</connection_state> 

繼MSDN,我必須把它描述爲一個類型使用XmlSerializer的正確的反序列化。所以類名指向第一個標籤和它的字段子標籤。 例如:

public class connection_state 
{ 
    public string state; 
} 

將被改造成以下XML:

<?xml version="1.0" encoding="UTF-8"?> 
<connection_state> 
    <state>conn_state</state> 
</connection_state> 

但我收到的XML只有一個標籤。我們不能創建一個與其類名稱相同的字段:

public class connection_state 
{ 
    public string connection_state; 
} 

或者可以嗎? 有沒有解決這個問題的方法?

回答

3

正確的XML具有除了其他元件沒有內容的根元素。如果你堅持使用那個微小的one-tag psuedo-XML,是否有你需要使用XmlSerializer的理由?爲什麼不創建一個構造函數字面「XML」串類:

using System.Xml.Linq; 

public class connection_state { 
    public string state { get; set; } 
    public connection_state(string xml) { 
     this.state = XDocument.Parse(xml).Element("connection_state").Value; 
    } 
} 

編輯:

針對OP的評論:你不給我們一個XmlSerializer ;您可以直接讀取ResponseStream並將其傳遞給您的connection_state構造函數:

String xmlString = (new StreamReader(webResponse.GetResponseStream())).ReadToEnd(); 
connection_state c= new connection_state(xmlString); 
+0

我需要XmlSerializer,因爲我在WebRequest的WebResponse中接收到這個xml正文。 – Dragon 2011-12-30 15:39:08

0

替換

public class connection_state 
{ 
    public string state; 
} 

public class connection_state 
{ 
    public string state {set; get;} 
} 
+0

它被顯示爲完整xml的示例。而在我的情況下,我有一個標籤XML(只有「connection_state」標籤)。我沒有「國家」字段。 – Dragon 2011-12-30 15:40:54

相關問題