当我使用XmlSerializer
创建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(或任何其他程序)不需要计算它?
这是一个示例程序,显示了我如何创建我的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并且需要花费很长时间来解析数据,我希望通过提供架构可以减少花费的时间。处理文件。
答案 0 :(得分:0)
如果您已有XSD文件,则可以将其加载到Excel中,然后将Excel设置为使用此模式到您的文件中。只需按照本指南http://www.mrexcel.com/articles/using-xml-in-excel.php 通过这种方式,您可以将Excel文件另存为XML数据,这只需使用您的架构进行验证。
答案 1 :(得分:0)
就其本质而言,XML是一种相当冗长的语法。考虑直接写入CSV,或通过OLE使用XLSB。 XLSB保留原生Excel格式,但是是一种二进制紧凑格式,可以快速加载。