Допустим, у меня есть этот простой (объединение как) C # struct
[StructLayout(LayoutKind.Explicit)]
public struct MyData
{
[FieldOffset(0)]
public int Num;
[FieldOffset(0)]
public int Number;
[FieldOffset(4)]
public string Name;
[FieldOffset(4)]
public string Url;
};
И метод сохранения, который использует XmlSerializer и StreamWriter
static void SaveToXml(object obj, string fileName)
{
XmlSerializer writer = new XmlSerializer(obj.GetType());
using (StreamWriter file = new StreamWriter(fileName))
{
writer.Serialize(file, obj);
}
}
Итак, если бы мы поместили некоторые данные и сохранили их:
MyData md = new MyData();
md.Name = "Ilan_01";
md.Num = 1;
SaveToXml(md, @"C:\temp\data.xml");
Файл XML будет выглядеть так:
<?xml version="1.0" encoding="utf-8"?>
<MyData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Num>1</Num>
<Number>1</Number>
<Name>Ilan_01</Name>
<Url>Ilan_01</Url>
</MyData>
Можно ли сделать так, чтобы это выглядело (используя тот же или аналогичный метод) ??
<?xml version="1.0" encoding="utf-8"?>
<MyData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Num>1</Num>
<Name>Ilan_01</Name>
</MyData>
EDIT
С другой стороны, если бы мы установили эти данные:
md = new MyData();
md.Url = "127.0.0.1";
md.Number = 2;
Мне бы хотелось, чтобы этот XML вышел.
<?xml version="1.0" encoding="utf-8"?>
<MyData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Number>2</Number>
<Url>127.0.0.1</Url>
</MyData>
Так что атрибут XmlIgnore
не то, что я ищу.
Это просто простой пример, реальная реализация - с разными типами (одинакового размера) других структур.
Конец редактирования
Спасибо, Илан