2012-01-12 4 views
6

Я должен получить следующие XMLСериализация XML с XML-строкой

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

Я отображенные это класс, со свойством тела типа строки.

Если я устанавливаю тело к значению строки: «<random>This could be any rondom piece of unknown xml</random>»

Строка будет закодирована во время сериализации. Как я могу не кодировать строку так, чтобы она записывалась как необработанный XML?

Я также хочу, чтобы иметь возможность десериализовать это.

+0

Какой язык? Какая платформа? – Oded

+0

Opps, justed добавил теги .NET и C# – John

ответ

5

XmlSerializer просто не доверяет вам производить действительный xml с string. Если вы хотите, чтобы член был ad-hoc xml, он должен быть чем-то вроде XmlElement. Например:

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

с Body в XmlElement имени random с InnerText из "This could be any rondom piece of unknown xml" будет работать.


[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

Спасибо, вы, похоже, очень хорошо разбираетесь в xml-серилизации и можете ответить: http://stackoverflow.com/questions/8853082/custom-xml-serialization – John

+0

Прохладное решение, даже Deserialization works - но что, если случайный XML подобен ' --- -------'? Тогда он не может быть загружен в XmlDocument. Это то, что мне нужно сделать - с десериализацией. – Nenotlep

Смежные вопросы