【问题标题】:optimize Large XML File in c#在 C# 中优化大型 XML 文件
【发布时间】:2015-10-10 07:22:48
【问题描述】:

如何处理大型 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>

像这样,我必须使用上面的 xml 制作 1000 多个具有更多配置信息的资产,在这里,相同的 xml 标记被一次又一次地重复。如何从 c# 类制作优化的 xml 文件。

【问题讨论】:

  • 你的 xml 结构和 C# 之间的联系是什么? C# 以何种方式可以帮助您拥有更轻量的 XML 文件?你的问题对我来说根本不清楚。
  • “优化”是什么意思?说明您的要求,然后 SO 可能会为您提供帮助。
  • 如果大小是个问题,请考虑在可能的情况下为某些元素使用属性。以 ID 为例——这是一个小的优化,但 id="1" 占用的空间比 1 少,至少在序列化时是这样。
  • 我知道这不是在回答问题...但是如果 xml 标记很简单...只需转换为 json 然后传输,然后在需要时转换回 xml。我假设您正在使用内置的 xml 序列化程序来生成您的 xml。还引用“我的问题是如何在 c# 中实现上述参数”并不是一个有效的问题。

标签: c#


【解决方案1】:

也许像这样使用 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);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-21
    • 1970-01-01
    • 1970-01-01
    • 2013-07-25
    • 2019-04-22
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多