2012-01-12 22 views
6

tengo para producir el siguiente código XMLXML Serialize con una cadena XML

<object> 
    <stuff> 
     <body> 
      <random>This could be any rondom piece of unknown xml</random> 
     </body> 
    </stuff> 
</object> 

he asignado este a una clase, con una propiedad del cuerpo de tipo cadena.

Si fijo el cuerpo para el valor de cadena: "<random>This could be any rondom piece of unknown xml</random>"

La cadena se codifica durante la serialización. ¿Cómo no puedo codificar la cadena para que se escriba como XML sin procesar?

yo también quiero ser capaz de deserializar esto.

+0

qué idioma? ¿Qué plataforma? – Oded

+0

Opps, justed añadió el .NET y # etiquetas C – John

Respuesta

5

XmlSerializer simplemente no va a confiar en usted para producir XML válido de un string. Si desea que un miembro sea xml ad-hoc, debe ser algo así como XmlElement. Por ejemplo:

[XmlElement("body")] 
public XmlElement Body {get;set;} 

con Body un llamado XmlElementrandom con InnerText de "This could be any rondom piece of unknown xml" funcionaría.


[XmlRoot("object")] 
public class Outer 
{ 
    [XmlElement("stuff")] 
    public Inner Inner { get; set; } 
} 
public class Inner 
{ 
    [XmlElement("body")] 
    public XmlElement Body { get; set; } 
} 

static class Program 
{ 
    static void Main() 
    { 
     var doc = new XmlDocument(); 
     doc.LoadXml(
      "<random>This could be any rondom piece of unknown xml</random>"); 
     var obj = new Outer {Inner = new Inner { Body = doc.DocumentElement }}; 

     new XmlSerializer(obj.GetType()).Serialize(Console.Out, obj); 
    } 
} 
+0

Gracias, que parecen bastante puesta al tanto de serilization XML, y la posibilidad de que puedas responder: http://stackoverflow.com/questions/8853082/custom-xml-serialization – John

+0

enfría la solución, incluso funciona deserialización - pero lo que si el XML es al azar como ' --- --- ----'? Entonces no se puede cargar en un XmlDocument. Eso es lo que tendría que hacer, con deserialización. – Nenotlep