4

当我使用创建 XML 文件XmlSerializer并尝试在 excel 中打开它时,我收到以下消息:

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

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

这是一个示例程序,展示了我如何创建我的 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,解析数据需要很长时间,我希望通过提供架构可以减少处理文件所需的时间.

4

2 回答 2

0

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

于 2013-11-26T01:54:46.763 回答
0

如果您已经拥有 XSD 文件,您可以将其加载到 Excel 中,然后设置 Excel 以在您的文件中使用此架构。只需按照本指南http://www.mrexcel.com/articles/using-xml-in-excel.php 通过这种方式,您可以将 Excel 文件保存为 XML 数据,这只是通过您的架构进行验证。

于 2013-11-25T20:24:18.787 回答