正确设置XmlSerializer选项
本文关键字:选项 XmlSerializer 设置 | 更新日期: 2023-09-27 18:02:41
我的XmlSerializer代码输出的Xml比我需要的要详细得多,我如何正确控制输出设置?这是代码:
var stream = new MemoryStream();
var xmlSerializer = new XmlSerializer(objectToSerialize.GetType());
xmlSerializer.Serialize(stream, objectToSerialize);
string xml = encoding != null ? encoding.GetString(stream.ToArray())
: Encoding.Default.GetString(stream.ToArray());
输出如下所示:
<?xml version="1.0"?>
<ArrayOfProduct xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Product>
<Id>1</Id>
<ProductCode>A</ProductCode>
<ProductDescription>Product A</ProductDescription>
<Obsolete xsi:nil="true"></Obsolete>
</Product>
</ArrayOfProduct>
我希望能够像这样格式化Xml:
- 从没有值的行中删除xsi:nil="true"
- 将像
<Obsolete></Obsolete>
这样的空标签折叠成简单的形式<Obsolete />
当您使用[Serializable]修饰类和成员时,对象将使用不包含xsi:nil="true "的旧方法进行序列化但是,当您用[DataContract]属性修饰该类时,XmlSerializer将包含xsi:nil="true.
删除xsi:nil="true的一种方法是用[Serializable]属性装饰类