假设我有这个简单的(类似联合)C# 结构
[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>
So the XmlIgnore
属性不是我要找的。
这只是一个简单的例子,真正的实现是使用不同类型(相同大小)的其他结构。
End Edit
谢谢,伊兰