在序列化时从XML中删除类型声明
本文关键字:删除 类型 声明 XML 序列化 | 更新日期: 2023-09-27 17:50:58
我需要得到清晰的xml没有任何namespace
和type
声明。下面是序列化后的xml:
<placeBetRequest p1:type="PlaceBetRequestTeamed" xmlns:p1="http://www.w3.org/2001/XMLSchema-instance">
...
</placeBetRequest>
需要以某种方式配置XmlSerializer来设置它不添加任何属性,但只有我的(如果我用[XmlAttribte]
设置它们)干净的XML需要看起来像这样:
<placeBetRequest>
...
</placeBetRequest>
这是我的序列化方法:
public static string XmlConvert<T>(T obj, params Type[] wellKnownTypes) where T : class
{
var emptyNamepsaces = new XmlSerializerNamespaces(new[] { XmlQualifiedName.Empty });
var settings = new XmlWriterSettings {Indent = true, OmitXmlDeclaration = true};
XmlSerializer serializer = wellKnownTypes == null
? new XmlSerializer(typeof(T))
: new XmlSerializer(typeof(T), wellKnownTypes);
using (var stream = new StringWriter())
using (var writer = XmlWriter.Create(stream, settings))
{
serializer.Serialize(writer, obj, emptyNamepsaces);
return stream.ToString();
}
}
请帮助。谢谢。
我一直在使用regex
string input =
"<p1:placeBetRequest p1:type='"PlaceBetRequestTeamed'" xmlns:p1='"http://www.w3.org/2001/XMLSchema-instance'">" +
"</p1:placeBetRequest>";
string pattern = @"(?'prefix''</?)(?'ns'[^:]*:)";
string output = Regex.Replace(input, pattern, "${prefix}");