如何用XML包含模式

当我使用XmlSerializer创build一个XML文件并尝试在Excel中打开它时,我得到以下消息:

 The specified XML source does not refer to a schema. Excel will create a schema based on the XML source data. 

有没有办法将模式包含在xml文件中,以便Excel(或其他程序)不需要计算它?

这里是一个示例程序,显示如何创build我的XML文件。

 namespace Sandbox_Console { internal class Program { private static void Main() { List<MyClass> test = new List<MyClass>(); test.Add(new MyClass() { Name = "Test", Foo = "Shazam"}); test.Add(new MyClass() { Name = "Test2", Foo = "Shazam2" }); XmlSerializer ser = new XmlSerializer(typeof (List<MyClass>)); using (var file = new FileStream(@"C:\Users\srchamberlain\Desktop\test.xml", FileMode.Create)) { ser.Serialize(file, test); } } } public class MyClass { [XmlAttribute] public string Name { get; set; } [XmlElement] public string Foo { get; set; } } } 

生成的XML

 <?xml version="1.0"?> <ArrayOfMyClass xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <MyClass Name="Test"> <Foo>Shazam</Foo> </MyClass> <MyClass Name="Test2"> <Foo>Shazam2</Foo> </MyClass> </ArrayOfMyClass> 

在我真正的文件中,我正在生成的文件大小超过300 MB大,这是需要很长时间的数据被parsing出来,我希望通过提供模式,可以减less处理文件所需的时间。

如果您已经有了XSD文件,您可以将其加载到Excel中,然后将Excel设置为使用该模式到您的文件中。 只要按照这个指南http://www.mrexcel.com/articles/using-xml-in-excel.php这样你可以将Excel文件保存为XML数据,这只是与您的架构validation&#x3002;

XML本质上是一个相当冗长的语法。 考虑直接写入CSV,或通过OLE使用XLSB。 XLSB保留原生的Excel格式,但是是一种快速加载的二进制压缩格式。