如何处理大型XML文件。我知道以下是影响XML文件的大小。 1)重复模式发生,例如。 dfd dfser,... 2)图案高度和尺寸(以字节为单位) 3)缩进 4)多个空格 5)扁平化模式
我的问题是如何在c#中实现上述参数。我搜索了这个,但无法得到任何例子。
任何人都可以帮助我实现这一目标。
更新1: 在压缩算法中,xml文件的大小减小了,但我想通过编程来减小文件大小。我从类中创建一个xml文件, 例如:
<assets>
<asset>
<id> 1</id>
<Hardware></Hardware> ....
</asset>
<asset>
<id> 1</id>
<Hardware> mouse</Hardware>
<Hardware>keyboard</Hardware> ....
</asset>
</assets>
像这样我需要为1000多个资产提供更多配置信息以及xml以上,这里相同的xml标签会一次又一次地重复。如何从c#类创建优化的xml文件。
答案 0 :(得分:2)
也许像这样使用GZip压缩?即使在最快的模式下,它也几乎完全消除了重复XML标签产生的文件大小开销。
[Serializable]
public class Asset
{
public int Id { get; set; }
public List<string> Hardware { get; set; }
}
...
List<Asset> assets = new List<Asset> {new Asset {Id = 1,
Hardware = new List<string> {"mouse", "keyboard"}}};
//serialize
using (GZipStream zs = new GZipStream(File.Create("compressed_xml.zip"),
CompressionLevel.Fastest))
{
XmlSerializer serializer = new XmlSerializer(typeof (List<Asset>));
serializer.Serialize(zs, assets);
}
//deserialize
using (GZipStream zs = new GZipStream(File.Open("compressed_xml.zip",FileMode.Open),
CompressionMode.Decompress))
{
XmlSerializer serializer = new XmlSerializer(typeof(List<Asset>));
assets=(List<Asset>) serializer.Deserialize(zs);
}