Исключает ли XmlSerializer специальные символы, такие как &?

Я пытаюсь реорганизовать библиотеку, которая передает свой объект как XML. Хотя я думаю, что XmlSerialzer .NET Framework может обрабатывать сериализацию, все классы имеют функцию ToXML. В нем все строковые значения проходят через функцию, экранирующую такие символы, как & и им подобные.

Разве XmlSerializer не экранирует эти символы автоматически?


person Norbert B.    schedule 12.08.2009    source источник


Ответы (2)


Да, это так.

using System;
using System.Collections.Generic;
using System.Text;
using System.Xml.Serialization;
using System.Xml;

namespace TestXmlSerialiser
{
    public class Person
    {
        public string Name;
    }

    class Program
    {
        static void Main(string[] args)
        {
            Person person = new Person();
            person.Name = "Jack & Jill";

            XmlSerializer ser = new XmlSerializer(typeof(Person));

            XmlWriterSettings settings = new XmlWriterSettings();
            settings.Indent = true;

            using (XmlWriter writer = XmlWriter.Create(Console.Out, settings))
            {
                ser.Serialize(writer, person);
            }
        }
    }
}

возвращается

<Person xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Name>Jack &amp; Jill</Name>
</Person>
person Mark Glasgow    schedule 12.08.2009

Все API-интерфейсы .NET XML естественным образом понимают правила XML. При необходимости они изменят < на &lt; и т.д.

person John Saunders    schedule 12.08.2009