gpt4 book ai didi

c# - 我应该使用什么来临时存储将被重用的 XML 数据?

转载 作者:太空宇宙 更新时间:2023-11-03 22:18:08 25 4
gpt4 key购买 nike

我有一个 47mb 的 XML 文件,我必须在我的应用程序中一遍又一遍地阅读它,但大多数情况下它只需要时不时地由给定术语定义的 1 个节点。

例子:

<customers>
<customer>
<id>someid</id>
<name>somename</name>
</customer>
<customer>
<id>someid</id>
<name>somename</name>
</customer>

...

<customer>
<id>someid</id>
<name>somename</name>
</customer>
<customer>
<id>someid</id>
<name>somename</name>
</customer>
</customers>

所以我在考虑在程序加载后将 xml 加载到字典或列表中,并将其保存在那里以供重用,直到应用程序关闭。

  • 我想知道的是什么最好的存储类型?

例如,如果我必须使用字典:

private Dictionary<int,string> myCustomerList = new Dictionary<int,string>();

稍后我可以用它来获取我需要的信息,例如:

if (myCustomerList.ContainsKey(keyX))
myValue = myCustomerList[keyX];
  • 这是一个糟糕的方式还是什么我应该看看吗?

最佳答案

您的方法在功能上没有任何问题,但是当向客户添加更多信息时会发生什么情况?例如,您可能有一个“位置”元素:

   <customer>
<id>someid</id>
<name>somename</name>
<location>somename</location>
</customer>

还要考虑将数据移动到数据库的场景 - 您将不得不重写大量代码。

在整个应用程序期间直接使用 XML 对象通常被认为是不好的做法。 “正确”的方法是首先将 XML 数据加载到面向对象的对象中。

您应该创建一个名为 Customer 的类,并使用 List<Customer> customers =new List<Customer>()来存储对象。然后您可以使用 customers.Find(x=>x.Id == myId)定位您的对象。

请记住,如果您将对象存储在内存中,您的应用程序将至少使用 47mb 的 RAM。随着您的业务获得更多客户,这可能会增长。或许您应该考虑延迟加载您的客户(在需要时从 XML 文件中检索他们)——这会比较慢,所以这实际上取决于您的吞吐量和数量要求。

关于c# - 我应该使用什么来临时存储将被重用的 XML 数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4263898/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com