所以,在我收到回复之后(在这种情况下,T
为string
):
var theResult = response.Content.ReadAsStringAsync().Result;
using (var stringreader = new StringReader(theResult))
{
var serializer = new XmlSerializer(typeof(T));
var responseObj = (T)serializer.Deserialize(stringreader);
}
theResult
是:
<string xmlns="http://tempuri.org/">Hello World</string>
当我执行Desrialize
时,我得到一个例外。 <string xmlns='http://tempuri.org/'> was not expected.
为内部异常,There is an error in XML document (2, 2).
为消息。
我正在尝试将Hello World
反序列化为字符串,或者当我有多个元素而不仅仅是根元素时反序列化为对象。当有一个拥有更多成员的根元素时,我想我已经弄明白了。
答案 0 :(得分:1)
为了解决此问题,您需要使用默认命名空间创建序列化程序:
[XmlRoot( Namespace="urn:my-namespace" )]
public class MyClass
{
public string MyField;
}
您可以在下面的链接中阅读更多内容:
https://msdn.microsoft.com/en-us/library/aa302290.aspx
例如,如果您使用的是Customer类,则可以为XmlSerialier定义特定的类名
index Speaker Date ARI Flesch Kincaid
0 Alan Greenspan 1996 15.234878 34.669383 14.533217
1 Alan Greenspan 1997 16.235605 31.415163 15.335869
11 Alan S. Blinder 2002 14.299481 41.847836 13.681203
12 Alan S. Blinder 2003 NaN NaN NaN
14 Alice M. Rivlin 1996 15.828971 33.394999 15.211662
您可以在上面的链接中详细了解。
答案 1 :(得分:0)
由于您有一个根级别的数组,因此您的xml框架不正确。您必须允许xml阅读器允许片段。
XmlSerializer xs = new XmlSerializer(typeof(AppConfig));
XmlReaderSettings settings = new XmlReaderSettings();
settings.ConformanceLevel = ConformanceLevel.Fragment;
XmlReader reader = XmlReader.Create(filepath);
AppConfig configData = (AppConfig)xs.Deserialize(reader);