VSTS2008 + C#+ .Net 3.0を使用しています。私はXMLをシリアライズするために以下のコードを使用しています。ここに私の現在のコードとシリアライズされたXMLファイルがあります。私の目的は、MyInnerObjectPropertiesを特別なXML名前空間(http://foo/2009)に所属させ、この名前空間を既定の名前空間にすることです。どのようにこれを実装するためのアイデア?XMLシリアル化を使用して別のXML名前空間にプロパティを配置する
電流出力:
<?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;
}
}
ジョージ、ときは、.NET 3.5 SP1の使用を停止しましたか? –
ジョン、私はいくつかのプロジェクトに取り組んでいます。それらのいくつかはスクラッチから開発されており、私は.Net 3.5 SP1 + .Net 2.0 SP2を使用します。従来のプロジェクトでは、元の.Netバージョンをそのまま使用します。 .NET 3.0ベースのプロジェクトでLINQを使用できないのは残念です。どのような方法でも、私の質問のための任意のアイデア? – George2
私はそれに取り組んでいます。誰かが私の前に答えを持っているだろう、私は確信している。 –