Как создать XML-документ из объекта .NET?

Цифры нельзя повторять. То, что вы, вероятно, ищете, - это функция range, которая создаст последовательность чисел до нужного числа:

for number in range(1, students + 1):

Причина, по которой я добавил + 1 есть потому, что второй аргумент диапазона является исключительным.

13
задан John Saunders 31 March 2010 в 02:05
поделиться

2 ответа

Вы хотите превратить произвольный объект .NET в сериализованную XML-строку? Нет ничего проще!! :-)

public string SerializeToXml(object input)
{
   XmlSerializer ser = new XmlSerializer(input.GetType(), "http://schemas.yournamespace.com");
   string result = string.Empty;

   using(MemoryStream memStm = new MemoryStream())
   {
     ser.Serialize(memStm, input);

     memStm.Position = 0;
     result = new StreamReader(memStm).ReadToEnd();
   } 

   return result;
} 

Что и должно быть к нему :-) Конечно, вы также можете сделать пространство имен XML по умолчанию настраиваемым в качестве параметра.

Или вы хотите иметь возможность создавать XmlDocument поверх существующего объекта?

public XmlDocument SerializeToXmlDocument(object input)
{
   XmlSerializer ser = new XmlSerializer(input.GetType(), "http://schemas.yournamespace.com");

   XmlDocument xd = null;

   using(MemoryStream memStm = new MemoryStream())
   {
     ser.Serialize(memStm, input);

     memStm.Position = 0;

     XmlReaderSettings settings = new XmlReaderSettings();
     settings.IgnoreWhitespace = true;

     using(var xtr = XmlReader.Create(memStm, settings))
     {  
        xd = new XmlDocument();
        xd.Load(xtr);
     }
   }

   return xd;
}
33
ответ дан 1 December 2019 в 17:19
поделиться

Вы можете сериализовать непосредственно в XmlDocument :

XmlDocument doc = new XmlDocument();
XPathNavigator nav = doc.CreateNavigator();
using (XmlWriter w = nav.AppendChild())
{
    XmlSerializer ser = new XmlSerializer(typeof(MyType));
    ser.Serialize(w, myObject);
}
25
ответ дан 1 December 2019 в 17:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: