2017-03-28 4 views
1

Ich betreibe ein Verfahren auf einem Dienst, der nur eine Zeile von XML auf einem String zurückgibt:Wie kann nur eine XML-Zeile in C# deserialisiert werden?

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

Ich habe versucht, diese Zeile auf diese Weise deserialisieren:

var strXml = "<boolean xmlns='http://schemas.microsoft.com/2003/10/Serialization/'>true</boolean>"; 
XmlSerializer serializer = new XmlSerializer(typeof(bool)); 
bool success = false; 

using (TextReader reader = new StringReader(strXml)) 
{ 
    success = (bool)serializer.Deserialize(reader); 
} 

Aber an der Linie

There is an error in XML document (1, 2) 
:
success = (bool)serializer.Deserialize(reader); 

wird eine Ausnahme ausgelöst

Es gibt einen Hinweis darauf, was ich tun kann? Ich bin ziemlich neu in der XML-Serialisierung.

Antwort

2

Sie können nur den Wert aus dem Wurzelknoten greifen und versuchen, es als bool-Analyse:

//load into XDocument 
var doc = XDocument.Parse("<boolean xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/\">true</boolean>"); 
bool success = bool.Parse(doc.Root.Value); //true 
+0

Im ersten Versuch, es funktionierte perfekt, danke! –

3

Sie XElement.Parse verwenden können jedes einzelne Element zu analysieren:

XElement element = XElement.Parse(strXml); 

Probe:

string strXml = @"<boolean xmlns =""http://schemas.microsoft.com/2003/10/Serialization/"">true</boolean>"; 
bool success = (bool)XElement.Parse(strXml); // true 

Try it online

0

Das XML sieht aus wie es mit DataContractSerializer erstellt wurde, so verwendet, dass:

var serializer = new DataContractSerializer(typeof(bool));   

using (var sr = new StringReader(xml)) 
using (var xr = XmlReader.Create(sr)) 
{ 
    var success = (bool) serializer.ReadObject(xr); 
} 
Verwandte Themen