ベストプラクティスのようには見えないことはわかっていますが、同じ名前空間で xml を生成する必要があります
例えば:
<ns1:root xsi:schemaLocation=""http://schemalocation""
xmlns:ns1=""http://schema""
xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance""
xmlns=""http://schema"">
...
</ns1:root>
また、シリアライザーに名前空間を追加しました。
var xmlSerializerNamespaces = new XmlSerializerNamespaces();
xmlSerializerNamespaces.Add("ns1", "http://schema");
xmlSerializerNamespaces.Add("xsi", "http://www.w3.org/2001/XMLSchema-instance");
xmlSerializerNamespaces.Add(string.Empty, "http://schema");
そして、これはクラスそのものです:
[XmlRoot(ElementName = "request", Namespace = "http://schema")]
[Serializable]
public class Request
{
[XmlAttributeAttribute("schemaLocation", Namespace = XmlSchema.InstanceNamespace)]
public string SchemaLocation
{
get { return _schemaLocation; }
set { _schemaLocation = value; }
}
...
private string _schemaLocation = "http://schemalocation"; }
したがって、すべてが優れていますが、デフォルトの xmlns は生成された xml にありません。私も XmlWriterSettings で遊んだことがありますが、結果はありません。文字列を置換せずにそれを行う方法を誰か考えていますか?)