gpt4 book ai didi

java - 使用 Guava Multimap 表示 xml 名称和值

转载 作者:行者123 更新时间:2023-11-30 04:56:14 27 4
gpt4 key购买 nike

如何使用 Guava Multimap 来表示以下 xml:

<node key="abc123">some value</node>
<node key="asdf22">
<node key="as234">some value343</node>
<node key="sggg234">some value234234</node>
</node>

在我的 xml 文件中,90% 的情况下给定的节点元素不会有内部节点(如果我可以对此进行优化?)。

我想要的是一个 KeyValuePair 集合,其中值是另一个 keyValuePair 集合。

在 C# 中我可以这样做:

public List<string,List<KeyValuePair<string,string>>> nodes;

我被告知要查看 Guava 的多重 map ,但不知道如何正确使用它,有人可以帮助我吗?

顺便说一句,由于 90% 的情况下我不需要该值成为另一个列表,我可以以某种方式针对这种情况进行优化吗?

最佳答案

不确定 MultiMap 是否最适合您在此处所描述的内容。多重映射是指同一个键有多个值。这不是您的 XML 所描述的内容。您的 XML 描述了一个层次结构,其中每个值都有一个路径,可能有多个键连接起来以描述它在层次结构中的位置。

从建模的角度来看,我会考虑使用两种类型的 XML 节点。 1 保存值,另一个保存节点(想想文件与目录)。不过,您需要切换 XML 才能在两种不同类型之间进行清晰的划分。这样解析起来会更容易。

所以,在粗略的伪代码中..

class Container {
private Map<String,String> keyValuePairs;
private Map<String,Container> children;
}

这给你无限的深度。每个容器都可以像其他容器一样保存键值对。顶级节点应该是根容器。递归应该是微不足道的。通过键/分隔符进行遍历也应该很容易。

可能比您需要的更灵活。根据需要进行修剪。

您还可以合并值/容器的概念,但这样您的建模就会变得有点难看。这是一个权衡。

关于java - 使用 Guava Multimap 表示 xml 名称和值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8453869/

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