无法使用XmlSerializer类反序列化一个字段xml

时间:2011-12-30 14:36:49

标签: c# xml-serialization

我有以下xml:

<?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;
}

还是可以吗? 这个问题有什么解决方案吗?

2 个答案:

答案 0 :(得分:3)

正确的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);

答案 1 :(得分:0)

替换

public class connection_state
{
   public string state;
}

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