我的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:
<Obsolete></Obsolete>
之类的空标签折叠为简单格式<Obsolete />
答案 0 :(得分:0)
使用[Serializable]装饰类和成员时,使用不包含xsi的旧方法序列化对象:nil =“true 但是当你使用[DataContract]属性修饰类时,XmlSerializer将包含xsi:nil =“true。
删除xsi的一种方法:nil =“true is to 用[Serializable]属性装饰类。