2012-01-12 15 views
6

devo produrre il seguente codice XMLSerialize XML con la stringa XML

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

ho mappato questo a una classe, con una proprietà del corpo di tipo stringa.

Se ho impostato il corpo al valore della stringa: "<random>This could be any rondom piece of unknown xml</random>"

La stringa viene codificato durante la serializzazione. Come posso non codificare la stringa in modo che venga scritta come XML non elaborato?

Desidero anche essere in grado di deserializzare questo.

+0

Che lingua? Quale piattaforma? – Oded

+0

Opps, justed ha aggiunto i tag .NET e C# – John

risposta

5

XmlSerializer semplicemente non ti fidi di produrre xml valido da un string. Se vuoi che un membro sia xml ad-hoc, deve essere qualcosa come XmlElement. Per esempio:

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

con Body un XmlElement nome random con InnerText di "This could be any rondom piece of unknown xml" avrebbe funzionato.


[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

Grazie, ti sembra abbastanza chiaro sulla serivizzazione xml, e possibilità di risposta: http://stackoverflow.com/questions/8853082/custom-xml-serialization – John

+0

Cool solution, anche la deserializzazione funziona, ma se l'XML casuale è come ' --- -------'? Quindi non può essere caricato in un XmlDocument. Questo è quello che avrei bisogno di fare - con la deserializzazione. – Nenotlep