【发布时间】:2014-10-31 18:00:28
【问题描述】:
我需要获取以下xml:
<request id="1">
<login>
<username>username</username>
<password>password</password>
</login>
</request>
但是中间的xml可以换成另一种类型的请求,比如
<request id="1">
<logout />
</request>
我尝试了以下方法:
[XmlRootAttribute(ElementName = "request", Namespace = "", IsNullable = false)]
public class Request<T>
{
[XmlAttributeAttribute(AttributeName = "id", Namespace = "")]
public string Id { get; set; }
public T Content { get; set; }
}
[XmlTypeAttribute(TypeName = "login", AnonymousType = true)]
public class LoginRequest
{
[XmlElementAttribute(ElementName = "username", Namespace = "")]
public string Username;
[XmlElementAttribute(ElementName = "password", Namespace = "")]
public string Password;
}
[XmlTypeAttribute(TypeName = "logout", AnonymousType = true)]
public class LogoutRequest
{
}
但是当我使用序列化对象时
var serializer = new XmlSerializer(typeof(Request<LoginRequest>));
我得到了以下 xml:
<request id="1">
<Content>
<username>username</username>
<password>password</password>
</Content>
</request>
如何将标签内容重命名为登录或注销?
非常感谢
【问题讨论】:
标签: c# attributes computer-science xmlserializer