2015-12-30 113 views
0

我目前使用WCF服務來調用外部API。解析布爾XML結果

我有一個方法調用Ping()用於檢查外部API是否可用並準備好調用。

[OperationContract] 
bool Ping(); 

我得到以下結果來自外部API:

<boolean xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/\">true</boolean> 

錯誤與我xmlns元素。事實上,這個值正常工作:

<boolean toto=\"http://schemas.microsoft.com/2003/10/Serialization/\">true</boolean> 

我有以下的通用方法反序列化:

public static T Deserialize<T>(IRestResponse response) 
    { 
     var serializer = new XmlSerializer(typeof(T)); 
     var reader = new StringReader(response.Content); 

     return (T)serializer.Deserialize(reader); 
    } 

用一個簡單的類型一樣布爾調用它時我爲什麼會得到這個例外?

var res = XmlHelper.Deserialize<bool>(client.Execute(request)); 

{ 「有XML文檔中的誤差(1,2)。」}

{「http://schemas.microsoft.com/2003/10/Serialization/'>沒有 預期「}

一切有很多複雜的對象

+0

錯誤信息是複製/粘貼的嗎?因爲''''''''中存在不匹配的問題 –

+0

似乎是(1,2) - >'「中的小文本引起了問題。看看你是否可以通過使'''一致來解決,也可以在'Serialization /'後面加上'(注意引號) – Ian

+0

我得到一個錯誤,這個值爲'xmlns = \「http://schemas.microsoft.com/ 2003/10/Serialization/\「>'但沒有這個'xmlns =」http://schemas.microsoft.com/2003/10/Serialization/「>'。你知道一個解決方法誰工作?使用'response.Content.Replace(@「\」,「」)'沒有幫助我仍然有例外 –

回答

1

的工作完美這應該工作 -

var xml = new StreamReader("xmlPath"); 
var t = new XmlSerializer(typeof(Boolean),"http://schemas.microsoft.com/2003/10/Serialization/"); 
var o = t.Deserialize(xml); // true