J'utilise VSTS2008 + C# + .Net 3.0. J'utilise le code ci-dessous pour sérialiser XML, voici mon code actuel et mon fichier XML sérialisé. Mon but est de faire en sorte que MyInnerObjectProperties appartienne à un espace de noms XML spécial (http://foo/2009) et de faire de cet espace de noms un espace de noms par défaut. Des idées comment mettre en œuvre cela?Placement d'une propriété dans un autre espace de noms XML avec sérialisation XML
Sortie courant:
<?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>
Code actuel:
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, quand avez-vous arrêtez d'utiliser .NET 3.5 SP1? –
John, je travaille sur plusieurs projets. Certains d'entre eux sont développés à partir de scrach, et je vais utiliser .Net 3.5 SP1 + .Net 2.0 SP2. Pour les projets hérités, je garderai sa version originale .Net. Il est dommage que LINQ ne puisse pas être utilisé dans des projets basés sur .Net 3.0. De toute façon, des idées pour ma question? – George2
Je travaille dessus. Quelqu'un aura la réponse avant moi, j'en suis sûr. –