如何避免在xmlroot中编码特殊字符

本文关键字:编码 特殊字符 xmlroot 何避免 | 更新日期: 2023-09-27 18:18:40

我试图序列化一个类JTDChanges与不同的xmlrootname "ns1:BatchChanges",但序列化后,当我把它写入一个文件,"ns1:BatchChanges"被编码为"ns1_x003A_BatchChanges"。

这是我的类

[ Serializable, XmlRoot("ns1:BatchChanges") ]
    public class JTDChanges
    {
        [XmlElement("OrgUnitChanges")]
        public List<OrgUnitStage> CustomerChanges = new List<OrgUnitStage>();
    } 

谁能建议我如何避免编码?

如何避免在xmlroot中编码特殊字符

我相信您正在寻找Xml命名空间函数

[Serializable, XmlRoot("BatchChanges, Namespace = "http://www.w3.org/XML/2008/xsdl-exx/ns1") ]
public class JTDChanges
{
    [XmlElement("OrgUnitChanges")]
    public List<OrgUnitStage> CustomerChanges = new List<OrgUnitStage>();
} 

在它真正起作用之前,您还需要告诉序列化器使用这个命名空间

// Create a name space prefix
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("ns1", "ttp://www.w3.org/XML/2008/xsdl-exx/ns1");
// Create a serializer
System.Xml.Serialization.XmlSerializer ser = new System.Xml.Serialization.XmlSerializer(this.GetType());
// And pass the namespace along as param
ser.Serialize(writer, this, ns)

对于一个测试,你可以声明如下

 [XmlElement(ElementName = "point", Namespace = "http://www.w3.org/XML/2008/xsdl-exx/ns1")]

将导致<ns1:point>(whatever the values were you declared it upon)</ns1:point>