有没有办法让xml序列化程序转换以下内容:
class Mail
{
public string Subject = "sub1";
}
进入以下XML架构:
<Mail>
<MailSubject>
<Subject>sub1</Subject>
</MailSubject>
</Mail>
那就是我想在不使用以下子类的情况下将xmlElement包装在一个新的xmlElement组中:
class Mail
{
public MailSubject MailSubject = new MailSubject();
}
class MailSubject
{
public string Subject = "sub1";
}
我的xml格式来自第三方,我正在努力使我们的对象有意义,并且在保持其xml架构的同时易于使用。
答案 0 :(得分:1)
正如Buh Buh所说,通过实施 IXmlSerializable 来实现这一目标的唯一方法。可能的实现如下所示:
public class Mail : IXmlSerializable
{
public string Subject;
public System.Xml.Schema.XmlSchema GetSchema()
{
return null;
}
public void ReadXml(System.Xml.XmlReader reader)
{
bool isEmpty = reader.IsEmptyElement;
reader.ReadStartElement();
if (isEmpty) return;
isEmpty = reader.IsEmptyElement;
reader.ReadStartElement();
if (isEmpty)
{
reader.ReadEndElement();
return;
}
Subject = reader.ReadString();
reader.ReadEndElement();
reader.ReadEndElement();
}
public void WriteXml(System.Xml.XmlWriter writer)
{
writer.WriteStartElement("MailSubject");
writer.WriteElementString("Subject", Subject);
writer.WriteEndElement();
}
}
答案 1 :(得分:0)
如果您Mail
实施IXmlSerializable
,那么您可以拥有自己喜欢的任何xml。但这可能只是创造了比你真正想做的更多的工作。