代码之家  ›  专栏  ›  技术社区  ›  Norbert B. MJB

xmlserializer是否转义了特殊字符,如&?

  •  5
  • Norbert B. MJB  · 技术社区  · 15 年前

    我试图重构一个以XML形式传输对象的库。尽管我认为.NET框架的xmlserialzer可以处理序列化,但类都有一个 ToXML 功能。在它中,所有字符串值都被放入一个转义字符的函数中。 相似和相似。

    XML序列化程序是否不自动转义这些类型的字符?

    2 回复  |  直到 9 年前
        1
  •  11
  •   Mark Glasgow    15 年前

    是的。

    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>
    
        2
  •  1
  •   John Saunders    15 年前

    所有的.NET XML API都很自然地理解XML的规则。如有必要,他们会改变 < 进入之内 &lt; 等。