Предложение, которое я собирался сделать, если текстовый тег содержал только p тегов, было следующим, это может быть полезно в краткосрочной перспективе.
Вместо истории, имеющей текстовое поле в виде строки, вы можете иметь его в виде массива строк. Затем вы можете использовать правильные атрибуты XmlArray (не могу вспомнить точные имена, что-то вроде XmlArrayItemAttribute) с правильными параметрами, чтобы он выглядел следующим образом:
<text>
<p>blah</p>
<p>blib</p>
</text>
Что на шаг ближе, но не совсем то, что вам нужно.
Другой вариант - создать класс вроде:
public class Text //Obviously a bad name for a class...
{
public string[] p;
public string[] pre;
}
И снова используйте атрибуты XmlArray, чтобы он выглядел правильно, не уверен, что они так же настраиваемы, как раньше, потому что раньше я использовал их только для простых типов.
Edit:
Использование:
[System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = false)]
public class story
{
[System.Xml.Serialization.XmlAttributeAttribute()]
public string id;
[System.Xml.Serialization.XmlAttributeAttribute()]
public string date;
[System.Xml.Serialization.XmlAttributeAttribute()]
public string time;
public string title;
[XmlArrayItem("p")]
public string[] text;
}
Хорошо работает с предоставленным XML, но иметь класс кажется немного сложнее. В итоге получается что-то похожее на:
<code> <text>
<p>
<p>qwertyuiop</p>
<p>asdfghjkl</p>
</p>
<pre>
<pre>stuff
nonsense
что явно не то, что нужно.