我有一个类MyType
,它是由xsd.exe工具从xsd模式文件自动生成的。我想将MyType
对象序列化为文件,我对格式化有一些特殊需求。目前我正在使用XmlWriter:
XmlSerializer serializer = new XmlSerializer(typeof(MyType));
MyType data = new MyType(...); // fill data
string myFile = "C:\myFile.xml";
using (XmlWriter wr = XmlWriter.Create(myFile))
{
serializer.Serialize(wr, data, new XmlSerializerNamespaces(new XmlQualifiedName[] { new XmlQualifiedName("", "") }));
// The XmlSerializerNamespaces is needed because I don't want any namespace attributes in the xml.
}
我以为我可以向XmlWriterSettings
输入一些XmlWriter.Create
,但我不知道他们是否可以做我想要的。我在MSDN文档中找不到有关我的需求的任何有用设置。
这些是我的需求:
elem
为空,我想将<elem></elem>
作为输出。目前我得到<elem />
。<xs:attribute default="defaulValue" name="attributeName">
),则仍应编写该属性。目前它被省略了。例如。而不是<elem>...</elem>
,省略了属性,我想要<elem attributeName="defaultValue">...</elem>
。encoding="UTF-8"
(带大写字母)。目前它包含encoding="utf-8"
(小写字母)。 有关如何使用XmlSerializer
使用所需格式将数据序列化为xml的任何提示?
我不以任何方式依附于XmlWriter
;我只需要在序言中加入encoding
条目,而XmlWriter
附带它。
哦,我不想修改xsd生成的代码,因为我不得不每隔一段时间重新生成它(只要xsd架构发生变化)。