我需要将我的C#类序列化为XML,看起来像这样:
<request>
<session>12345</session>
<page>1</page>
<elements_per_page>999</elements_per_page>
<location>
<zone>aaaa</zone>
<region>bbbb</region>
<coordinates>
<lat>38.680632</lat>
<lon>-96.5001</lon>
</coordinates>
</location>
</request>
我不想要的是3个类(请求,位置,坐标),我只想要一个具有所有changable属性的类作为该类的根,然后添加一些可以创建嵌套XML的序列化标记,就是可能吗?
让我们从裸班开始:
[XmlRoot]
class request
{
[XmlElement]
public int session { get; set; }
[XmlElement]
public int page { get; set; }
[XmlElement]
public int elements_per_page { get; set; }
[?]
public string zone { get; set; }
[?]
public string region { get; set; }
[?]
public decimal lat { get; set; }
[?]
public decimal lon { get; set; }
}
如何映射它们以便创建我所描述的XML?感谢您帮助好人:)
答案 0 :(得分:0)
“就是这样吗?”
没有。有3个班级有什么问题?你想如何以其他方式完成XML到静态代码的链接?
此外,如果您只想肮脏地吐出一些XML,您可以使用System.Xml.XmlDocument
并从头开始构建一个xml,您可以使用System.Xml.Serialization.XmlSerializer
进行序列化。像这样:
public string SerializeRequest(Request request)
{
XmlDocument document = new XmlDocument();
XmlElement requestElement = document.CreateElement("request");
XmlElement sessionElement = document.CreateElement("session");
sessionElement.InnerText = request.session.ToString(CultureInfo.InvariantCulture);
XmlElement pageElement = document.CreateElement("page");
pageElement.InnerText = request.page.ToString(CultureInfo.InvariantCulture);
XmlElement elementsPerPageElement = document.CreateElement("elements_per_page");
elementsPerPageElement.InnerText = request.elements_per_page.ToString(CultureInfo.InvariantCulture);
XmlElement zoneElement = document.CreateElement("zone");
zoneElement.InnerText = request.zone;
XmlElement regionElement = document.CreateElement("region");
regionElement.InnerText = request.region;
XmlElement latElement = document.CreateElement("lat");
latElement.InnerText = request.lat.ToString(CultureInfo.InvariantCulture);
XmlElement lonElement = document.CreateElement("lon");
lonElement.InnerText = request.lon.ToString(CultureInfo.InvariantCulture);
XmlElement coordinatesElement = document.CreateElement("coordinate");
coordinatesElement.AppendChild(latElement);
coordinatesElement.AppendChild(lonElement);
XmlElement locationElement = document.CreateElement("location");
locationElement.AppendChild(zoneElement);
locationElement.AppendChild(regionElement);
locationElement.AppendChild(coordinatesElement);
requestElement.AppendChild(sessionElement);
requestElement.AppendChild(pageElement);
requestElement.AppendChild(elementsPerPageElement);
requestElement.AppendChild(locationElement);
document.AppendChild(requestElement);
string serializedObj = document.OuterXml;
return serializedObj;
}