首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在c#中优化大型XML文件

在c#中优化大型XML文件
EN

Stack Overflow用户
提问于 2015-10-10 15:22:49
回答 1查看 690关注 0票数 1

如何处理大尺寸的XML文件。我知道以下几点会影响XML文件的大小。1)重复模式出现,如:dfd dfser,... 2)图案高度和大小(字节) 3)缩进4)多个空格5)展平图案

我的问题是如何在c#中实现上述参数。我用谷歌搜索了一下,但是找不到任何例子。

有没有人能帮我做到这一点。

更新1:在压缩算法中,xml文件的大小减小了,但我想通过编程来减小文件的大小。我从一个类生成一个xml文件,例如:

代码语言:javascript
复制
<assets>
<asset>
<id> 1</id>
<Hardware></Hardware> ....

</asset>

<asset>
<id> 1</id>
<Hardware> mouse</Hardware>
<Hardware>keyboard</Hardware> ....

</asset>
</assets>

就像这样,我不得不用上面的xml为1000多个资产提供更多的配置信息,这里相同的xml标签一次又一次地重复。如何从c#类生成优化的xml文件。

EN

回答 1

Stack Overflow用户

发布于 2015-10-10 16:47:10

也许可以像这样使用GZip压缩?即使在最快模式下,它也几乎完全消除了重复XML标记所产生的文件大小开销。

代码语言:javascript
复制
[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);
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33051431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档