XmlSerializer是否会逃脱像&amp ;?这样的特殊字符?

时间:2009-08-12 13:31:59

标签: c# xml serialization

我正在尝试重构一个以XML格式传输它的对象的库。虽然我认为.NET Framework的XmlSerialzer可以处理序列化,但该类都具有ToXML函数。在其中,所有字符串值都通过一个转义字符的函数  喜欢&和我一样。

XmlSerializer是否不会自动转义那些字符?

2 个答案:

答案 0 :(得分:11)

是的。

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>

答案 1 :(得分:1)

所有.NET XML API都自然地理解XML的规则。如有必要,他们会将<更改为&lt;等。