[DataContract(Name = "response", Namespace = "http://domain.com/name")]
public class MyResponseClass
{
[DataMember(Name = "count", IsRequired = true, Order = 0)]
public int Count { get; set; }
[DataMember(Name = "info", IsRequired = false, Order = 1)]
public InfoClass Info { get; set; }
[DataMember(Name = "metadata", IsRequired = false, Order = 2)]
public MetadataList Metadatas { get; set; }
}
<response xmlns="http://domain.com/name">
<count>4</count>
</response>
<response xmlns="http://domain.com/name" xmlns:i="http://www.w3.org/2001/XmlSchema-instance">
<count>4</count>
<info i:nil="true" />
<metadata i:nil="true" />
</response>
是否有任何方法使DataContractSerializer在节点为空值时不写入节点?
使用emitDefaultValue=false
跳过XML中的默认值:
[DataContract(Name = "response", Namespace = "http://domain.com/name")]
public class MyResponseClass
{
[DataMember(Name = "count", IsRequired = true, Order = 0, EmitDefaultValue = false)]
public int Count { get; set; }
[DataMember(Name = "info", IsRequired = false, Order = 1, EmitDefaultValue = false)]
public InfoClass Info { get; set; }
[DataMember(Name = "metadata", IsRequired = false, Order = 2, EmitDefaultValue = false)]
public MetadataList Metadatas { get; set; }
}
要删除xmlns:i=“http://www.w3.org/2001/xmlschema-instance”
,您必须使用例如replace()
,如下例所示
public void Write(string filePath, MyResponseClass myResponse)
{
var serializer = new DataContractSerializer(typeof(MyResponseClass));
var sb = new StringBuilder();
using (var writer = new StringWriter(sb))
using (var xmlWriter = XmlWriter.Create(writer))
{
serializer.WriteObject(xmlWriter, myResponse);
}
using (StreamWriter stream = new StreamWriter(filePath))
{
sb = sb.Replace(" xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\"", "");
stream.Write(sb);
}
}
关于:)
我请求soapenv提供以下信息: 我想删除xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance" 我能用我的服务吗?也许你可以设定组织。阿帕奇。轴客户调用具有某些属性的对象。。。我不知道。
我得到以下错误时运行我的应用程序:附加信息:错误在第2行位置64.从命名空间http://www.w3.org/2001/XMLSchema-instance期待元素CustomeLeads...遇到名称为“自定义线索”、命名空间的“元素”。 我不明白为什么我会收到这个错误消息,因为正如你从XML中看到的,“自定义领导”包含在XML中。如果我取出命名空间,文件将不会读取元素。包括命名空间似乎工作,
如何删除xmlns:I=”http://www.w3.org/2001/XMLSchema-instance“使用DataContractSerializer时。 这就是我得到的: 我想得到这样的东西: 这是我的模型: 我试图避免使用字符串替换来删除它。
其中是命名空间的XSD架构定义文件“http://www.w3.org/2001/XMLSchema-instance"?
名称空间“http://www.w3.org/2001/xmlschema-instance”的XSD模式定义文件在哪里?
当引用另一个XSD中的定义时,我们对不同命名空间中的另一个XSD使用“import”,对相同命名空间中的另一个XSD使用“include”。