使用以下代码反序列化对象
using (MemoryStream memoryStream = new MemoryStream()) { try { XmlWriterSettings writerSettings1 = new XmlWriterSettings(); writerSettings1.CloseOutput = false; writerSettings1.Encoding = System.Text.Encoding.UTF8; writerSettings1.Indent = false; writerSettings1.OmitXmlDeclaration = true;
XmlWriter writer1 = XmlWriter.Create(memoryStream, writerSettings1);
XmlSerializer xs1 = new XmlSerializer(obj.GetType(), string.Empty);
xs1.UnknownAttribute += new XmlAttributeEventHandler(xs1_UnknownAttribute);
xs1.UnknownElement += new XmlElementEventHandler(xs1_UnknownElement);
xs1.UnknownNode += new XmlNodeEventHandler(xs1_UnknownNode);
xs1.UnreferencedObject += new UnreferencedObjectEventHandler(xs1_UnreferencedObject);
xs1.Serialize(writer1, obj);
writer1.Close();
}
catch (InvalidOperationException)
{
return null;
}
memoryStream.Position = 0;
serializeObjectDoc.Load(memoryStream);
return serializeObjectDoc.DocumentElement;
在此之后,当我检查返回节点时,我得到两个额外的属性 {Attribute,Name =“xmlns:xsi”,Value =“http://www.w3.org/2001/XMLSchema-instance”} object {System.Xml.XmlAttribute} {Attribute,Name =“xmlns:xsd”,Value =“http://www.w3.org/2001/XMLSchema”} object {System.Xml.XmlAttribute}
我想知道如何禁用这两个属性
答案 0 :(得分:3)
XmlSerializerNamespaces
救援;一个简单(但完整)的例子:
using System.Xml.Serialization;
using System;
public class Foo
{
public string Bar { get; set; }
static void Main()
{
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("", "");
XmlSerializer ser = new XmlSerializer(typeof(Foo));
ser.Serialize(Console.Out, new Foo { Bar = "abc" }, ns);
}
}