servicestack-text,C#,servicestack Text" /> servicestack-text,C#,servicestack Text" />

C# 序列化为XML删除名称空间、XML定义等

C# 序列化为XML删除名称空间、XML定义等,c#,servicestack-text,C#,servicestack Text,我必须使用ServiceStack.Text.XmlSerializer.serialize序列化以下对象以删除所有属性。我知道这是一个很糟糕的做法,但是我必须通过模拟XML(一个手工解析)与一个旧C++编写的服务器对话,它不处理属性,例如 我的班级是 [DataContract(Namespace = "", Name = "DataValutaRequest")] public class DateValueRequestPayload { [

我必须使用ServiceStack.Text.XmlSerializer.serialize序列化以下对象以删除所有属性。我知道这是一个很糟糕的做法,但是我必须通过模拟XML(一个手工解析)与一个旧C++编写的服务器对话,它不处理属性,例如

我的班级是

[DataContract(Namespace = "", Name = "DataValutaRequest")]
public class DateValueRequestPayload
{
    [DataMember()]
  
    public int Cross { get; set; }
    [DataMember()]
 
    public DateTime TradeDate { get; set; }
}
它被序列化为

<?xml version="1.0" encoding="utf-8"?><DataValutaRequest xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><Cross>11</Cross><TradeDate>2015-07-27T00:00:00+02:00</TradeDate></DataValutaRequest>
112015-07-27T00:00:00+02:00
我需要移除

<?xml version="1.0" encoding="utf-8"?>
xmlns:i="http://www.w3.org/2001/XMLSchema-instance"

xmlns:i=”http://www.w3.org/2001/XMLSchema-instance"
我该怎么做? 谢谢


更新1:这不是重复的,因为它与servicestack的序列化相关,而不是MS one…如果您总是只需要删除这两个文本,您可以使用

serialized = serialized.Remove(0, @"<?xml version=""1.0"" encoding=""utf-8""?>".Length);
serialized = serialized.Remove(test.IndexOf(@"xmlns:i=""http://www.w3.org/2001/XMLSchema-instance"), @"xmlns:i=""http://www.w3.org/2001/XMLSchema-instance".Length);
serialized=serialized.Remove(0,@“。长度);
serialized=serialized.Remove(test.IndexOf)(@“xmlns:i=”)http://www.w3.org/2001/XMLSchema-instance“”,@“xmlns:i=“”http://www.w3.org/2001/XMLSchema-instance“.长度);

这是一种非常简单的方法,因为它实际上不会解析xml,因此如果需要更通用的方法,则必须解析xml并使用该信息删除部分。

如果始终只需要删除这两个文本,则可以使用

serialized = serialized.Remove(0, @"<?xml version=""1.0"" encoding=""utf-8""?>".Length);
serialized = serialized.Remove(test.IndexOf(@"xmlns:i=""http://www.w3.org/2001/XMLSchema-instance"), @"xmlns:i=""http://www.w3.org/2001/XMLSchema-instance".Length);
serialized=serialized.Remove(0,@“。长度);
serialized=serialized.Remove(test.IndexOf)(@“xmlns:i=”)http://www.w3.org/2001/XMLSchema-instance“”,@“xmlns:i=“”http://www.w3.org/2001/XMLSchema-instance“.长度);

这是一种非常简单的方法,因为它实际上不会解析xml,因此如果需要更通用的方法,您必须解析xml并使用该信息删除部分。

xml名称空间由.NET的DataContractSerializer自动发出,并且不提供省略它的选项

删除它的唯一真正方法是序列化为XML,然后从原始XML中删除属性,例如:

var xml = dto.ToXml()
    .Replace(" xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\"","");
return xml;

如果您有更复杂的需求,还可以查看加载和。

XML命名空间由.NET的DataContractSerializer自动发出,并且不提供省略它的选项

删除它的唯一真正方法是序列化为XML,然后从原始XML中删除属性,例如:

var xml = dto.ToXml()
    .Replace(" xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\"","");
return xml;

如果您有更复杂的需求,还可以查看加载和。

DataContractSerializer?XmlSerializer?DataContractSerializer?XmlSerializer?对于@advapi,您应该能够在
Config.XmlWriterSettings.ommitXmlDeclaration
上更改它,对于@advapi,您应该能够在
Config.XmlWriterSettings.ommitXmlDeclaration
上更改它