2013-08-28 42 views
1

我需要序列化我的C#类XML看起来像这样:格式化程序对深嵌套的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类(请求,位置坐标),我只是想要一个具有所有可变属性的类作为该类的根,然后添加一些可创建嵌套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

“这是可能的吗?”

不,有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; 
} 
+0

1.我不想“脏吐了出来”任何XML,我需要生成XML根据提供给我一个规范(我没有得到XSD生成的类)。 2.有3个班级有什么意义?我希望有一些格式化程序指出这是嵌套的那样... –