在我们的应用程序中,我们需要多次从XML
检索数据。我们进行服务调用,以xml
格式获取数据并保存在内存中。稍后我们需要多次使用元素名称或属性名称检索数据,这样每次都会解析xml
这不是一个好方法。
我们只限制在内存中保存为String,也不能使用Spring或任何框架,因此我们可以保存为xml
或将String转换为某种格式并解析该String。这些是我能想到的选择:
感谢是否有人可以建议快速从String
中检索数据答案 0 :(得分:1)
由于我是vtd-xml的作者,我必须承认我的观点可能有偏见。但VTD-XML非常适合您的用例。
让我解释一下:
*对于使用VTD-XML的DOM,首先解析不会是一个大问题。
您还可以选择使用vtd-xml的内置索引来保存已解析的结果。基本上,如果你可以重复使用相同的xml而不需要多次解析它...它非常方便...只需将.vxl文件加载到内存中即可。 VTD-XML有两部分,XML(人类可读的文字XML)。另一个是二进制索引部分作为解析的输出。
由于VTD-XML使用的内存远远少于DOM。你的观点#3可能变得没必要了。
此外,vtd-xml的索引结构非常容易理解。它可以写在火柴盒的背面。
如果你了解它的基本原理,vtd-xml也非常适合Big xml拆分......
如果您有任何疑问,请告诉我。
答案 1 :(得分:0)
所以这就是我得到的印象:您需要将XML文件的序列化内容存储在String类型的变量中,并且您需要以最快的方式执行此操作。
假设不允许使用数组或链接的字符串列表,您可以将XML转换为JSON,这比解析,更容易缓存和缩小XML或任何其他序列化格式要快得多。然后将生成的JSON缩小并存储在字符串中。
例如,XML
<data>
<list>
<item>Item A</item>
<item>Item B</item>
</list>
</data>
可能会成为
{"data":{"list":{"item":["a","b"]}}}
注意比XML小得多,特别是考虑到只有开放的“标签”而不是关闭的标签,正如XML中所需要的那样。存储转换后的JSON数据的字符串将占用更少的内存(并且使用更大的数据集可以更加明显地保存数据量)并且解析起来要快得多。此外,JSON是在线数据传输的标准,并且在许多领域表现优于XML,尤其是在较大的数据集中或存储对象存在相当大的复杂程度时。
以下是关于此主题的更多内容:
JSON vs XML,面向Web的观点
https://www.w3schools.com/js/js_json_xml.asp
“JSON:XML的无脂替代”
JSON和XML之间的客观比较
https://www.sitepoint.com/json-vs-xml/
希望我帮忙!如果您有任何问题,请告诉我。
修改强> 我刚刚看到你对你的问题的评论,你的XML存储了非常大的数据集。在这种情况下,我不建议使用任何类型的序列化,而是将数据存储在数据库中(对于您需要的东西,我认为像MongoDB这样的东西将是最好的,因为它具有非结构化方法和适用于大型数据集)并且仅提取您目前需要的记录为一个较小的JSON,XML字符串,甚至是您使用的任何语言的类数组。
答案 2 :(得分:0)
将大型数据集转换为小型数据集。使用高效的序列化器/解析器。拉取解析和序列化,避免对象绑定(DOM /带注释的对象)。
如果可能,请在您拥有所需内容时停止解析。可能会安排您的数据,即排序,以实现这一目标。
JSON或XML是次要的。