首页 > 解决方案 > xml序列化编码“&”字符

问题描述

我将一个对象转换为xml字符串,然后转换为转义字符串。

public class Program
{
    public static void Main(string[] args)
    {
        BankDetails details = new BankDetails();

        var xmlstring = ToXmlString(details);
        var escaped = SecurityElement.Escape(xmlstring);
    }

    private static string ToXmlString<T>(T input)
    {
        XmlSerializer xsSubmit = new XmlSerializer(typeof(T));
        XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
        var xml = "";
        ns.Add("", "");

        using (var sww = new StringWriter())
        {
            using (XmlWriter writer = XmlWriter.Create(sww, new XmlWriterSettings()
            {
                OmitXmlDeclaration = true
            }))
            {
                xsSubmit.Serialize(writer, input, ns);
                xml = sww.ToString();
            }
        }

        return xml;
    }
}

public class BankDetails
{
    public string MemberName = "B & A Auto";
}

我怎样才能避免进入&amp;变量xmlstring

<BankDetails><MemberName>B &amp; A Auto</MemberName></BankDetails>

我正在寻找这样的输出:

xmlstring = //<BankDetails><MemberName>B & A Auto</MemberName></BankDetails>
//and then
escaped = //&lt;BankDetails&gt;&lt;MemberName&gt;B &amp; A Auto&lt;/MemberName&gt;&lt;/BankDetails&gt;

工作小提琴

标签: c#xml-serialization

解决方案


您可以使用 Unicode 等效字符,即十进制或十六进制、& 或 & 代替。

"B & A 自动" => "B & A 自动";

您可以解析您的字符串,将放大器转换为它们的 unicode 等效项,然后转义它们。


推荐阅读