【发布时间】:2009-08-04 15:19:06
【问题描述】:
我正在使用 VSTS2008 + C# + .Net 3.0。我正在使用下面的代码来序列化 XML,这是我当前的代码和序列化的 XML 文件。我的目的是让 MyInnerObjectProperties 属于一个特殊的 XML 命名空间 (http://foo/2009) 并将这个命名空间作为默认命名空间。有什么想法可以实现吗?
当前输出:
<?xml version="1.0"?>
<MyClass xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<MyObjectProperty>
<MyInnerObjectProperties>
<MyInnerObjectProperty>
<ObjectName>Foo Type</ObjectName>
</MyInnerObjectProperty>
<MyInnerObjectProperty>
<ObjectName>Goo Type</ObjectName>
</MyInnerObjectProperty>
</MyInnerObjectProperties>
</MyObjectProperty>
</MyClass>
当前代码:
public class MyClass
{
private MyObject[] _myObjectProperty;
[XmlElement(IsNullable=false)]
public MyObject[] MyObjectProperty
{
get
{
return _myObjectProperty;
}
set
{
_myObjectProperty = value;
}
}
}
public class MyObject
{
private MyInnerObject[] _myInnerObjectProperty;
[XmlArrayItemAttribute("MyInnerObjectProperty", typeof(MyInnerObject), IsNullable=false)]
public MyInnerObject[] MyInnerObjectProperties
{
get
{
return _myInnerObjectProperty;
}
set
{
_myInnerObjectProperty = value;
}
}
}
public class MyInnerObject
{
public string ObjectName;
}
public class Program
{
static void Main(string[] args)
{
XmlSerializer s = new XmlSerializer(typeof(MyClass));
FileStream fs = new FileStream("foo.xml", FileMode.Create);
MyClass instance = new MyClass();
instance.MyObjectProperty = new MyObject[1];
instance.MyObjectProperty[0] = new MyObject();
instance.MyObjectProperty[0].MyInnerObjectProperties = new MyInnerObject[2];
instance.MyObjectProperty[0].MyInnerObjectProperties[0] = new MyInnerObject();
instance.MyObjectProperty[0].MyInnerObjectProperties[0].ObjectName = "Foo Type";
instance.MyObjectProperty[0].MyInnerObjectProperties[1] = new MyInnerObject();
instance.MyObjectProperty[0].MyInnerObjectProperties[1].ObjectName = "Goo Type";
s.Serialize(fs, instance);
return;
}
}
【问题讨论】:
-
George,您什么时候停止使用 .NET 3.5 SP1?
-
约翰,我正在做几个项目。其中一些是从零开始开发的,我将使用 .Net 3.5 SP1 + .Net 2.0 SP2。对于遗留项目,我将保留其原始 .Net 版本。遗憾的是 LINQ 不能在基于 .Net 3.0 的项目中使用。无论如何,对我的问题有什么想法吗?
-
我正在努力。我敢肯定,有人会在我面前给出答案。
标签: c# .net xml visual-studio-2008 xml-serialization