当前位置: 首页 > 编程语言 > C#

使用XML序列化将属性放入不同的XML命名空间分享

时间:2023-04-10 11:27:02 C#

使用XML序列化将属性放入不同的XML命名空间我使用的是VSTS2008+C#+.Net3.0。我正在使用下面的代码来序列化XML,这是我当前的代码和序列化的XML文件。我的意图是让MyInnerObjectProperties属于一个特殊的XML命名空间(http://foo/2009)并将此命名空间设置为默认命名空间。任何想法如何实现这一点?当前输出:FooTypeGooType当前代码:publicclassMyClass{privateMyObject[]_myObjectProperty;[XmlElement(IsNullable=false)]publicMyObject[]MyObjectProperty{get{return_myObjectProperty;}设置{_myObjectProperty=值;}}}publicclassMyObject{privateMyInnerObject[]_myInnerObjectProperty;[XmlArrayItemAttribute("MyInnerObjectProperty",typeof(MyInnerObject),IsNullable=false)]publicMyInnerObject[]MyInnerObjectProperties{get{return_myInnerObjectProperty;}设置{_myInnerObjectProperty=值;}}}publicclassMyInnerObject{publicstringObjectName;}publicclassProgram{staticvoidMain(string[]args){XmlSerializers=newXmlSerializer(typeof(MyClass));FileStreamfs=newFileStream("foo.xml",FileMode.Create);MyClass实例=newMyClass();instance.MyObjectProperty=newMyObject[1];instance.MyObjectProperty[0]=newMyObject();instance.MyObjectProperty[0].MyInnerObjectProperties=新的MyInnerObject[2];instance.MyObjectProperty[0].MyInnerObjectProperties[0]=newMyInnerObject();instance.MyObjectProperty[0].MyInnerObjectProperties[0].ObjectName="Foo类型";实例.MyObjectProperty[0]。MyInnerObjectProperties[1]=newMyInnerObject();instance.MyObjectProperty[0].MyInnerObjectProperties[1].ObjectName="Goo类型";s.Serialize(fs,实例);返回;您需要创建一个XmlSerializerNamespaces对象,并向其添加所需的命名空间。XmlSerializerNamespaces对象包含XmlSerializer用来在XML文档实例中生成限定名称的XML命名空间和前缀。在您的C#代码中:XmlSerializerNamespacesmyNameSpaces=newXmlSerializerNamespaces();myNameSpaces.Add("MyInnerObject","http://foo/2009");然后,像这样向您的类添加一个属性:publicclassMyInnerObject{[XmlElement(Namespace="http://foo/2009")]更多信息:http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlserializernamespaces.aspx这样怎么样:[XmlArrayItemAttribute(Namespace="http://foo.com/2009"/*otherattr.params.*/)]publicMyInnerObject[]MyInnerObjectProperties{get{...}set{...}}试试publicclassMyObject{[XmlArrayItemAttribute("MyInnerObjectProperty",typeof(MyInnerObject),IsNullable=false)][XmlArray(Namespace="http://foo.com/2009")]publicMyInnerObject[]MyInnerObjectProperties{得到;放;对我来说,这样就产生了:以上是C#学习教程:使用XML序列化将属性放入不同的XML命名空间全部内容分享出来,如果对大家有用,需要详细了解C#学习教程,希望转载请关注——FooTypeGooType本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: