xsd.exe在字段上不包括名称空间

时间:2019-11-19 14:00:09

标签: c# xml xsd xmlserializer

我有一个xsd文件,其中包含多个名称空间。

使用xsd.exe(版本4.8.3928)生成C#文件后,everting可以,但是:

[System.Xml.Serialization.XmlTypeAttribute(Namespace ="MainNamespace")]
public class MainClass
{
 public SubClass mySubClass{get;set;}
}

[System.Xml.Serialization.XmlTypeAttribute(Namespace ="SubNamespace")]
public SubClass 
{
  //
}

如果我使用XmlSerializer对其进行序列化

    var ns = new XmlSerializerNamespaces();
                ns.Add("main", "MainNamespace");
                ns.Add("sub", "SubNamespace");


                var mainClass = new MainClass();
                mainClass.SubClass = new SubClass();
                var serializer = new XmlSerializer(typeof(MainClass));
                ...
                serializer.Serialize(writer, mainClass, ns);

他们两个都得到main:xml中的命名空间。

如果我将[XmlElement(Namespace = "SubNamespace")]的{​​{1}}属性放在SubClass的顶部 可以。

问题是:如何使用MainClass创建类并强制所有属性应包括其名称空间 要么 如何告诉xsd.exe放置XmlSerializer的名称空间而不添加subclasses属性。

0 个答案:

没有答案