在字典对象中搜索多路径查询或小枝查询

本文关键字:查询 小枝 多路径 搜索 字典 对象 | 更新日期: 2023-09-27 18:03:18

我必须通过读取XML文件并将其保存在某个对象中来实现类似XPath的功能。我用字典来查。

读取XML文件并将其保存在字典对象中,其中键作为从根节点到叶节点的唯一路径,值是由逗号分隔的一些特定数字。因此字典的键和值都是String类型。

搜索像/bookstore/book/author这样的单路径查询更容易,因为在字典中只能找到一个具有该特定键的条目。

在这个字典对象中搜索多路径查询或分支查询的最佳方式是什么?示例查询可以是//book//last-name

我必须搜索满足上述查询的所有路径以及字典对象中以逗号分隔的值的计数。

下面显示了一个示例XML文件

<?xml version='1.0'?> 
<!-- This file represents a fragment of a book store inventory database --> 
<bookstore> 
    <book genre="autobiography" publicationdate="1981" ISBN="1-861003-11-0"> 
        <title>The Autobiography of Benjamin Franklin</title> 
        <author> 
            <first-name>Benjamin</first-name> 
            <last-name>Franklin</last-name> 
        </author> 
        <price>8.99</price> 
    </book> 
    <book genre="novel" publicationdate="1967" ISBN="0-201-63361-2"> 
        <title>The Confidence Man</title> 
        <author> 
            <first-name>Herman</first-name> 
            <last-name>Melville</last-name> 
        </author> 
        <price>11.99</price> 
    </book> 
    <book genre="philosophy" publicationdate="1991" ISBN="1-861001-57-6"> 
        <title>The Gorgias</title> 
        <author> 
            <name>Plato</name> 
        </author> 
        <price>9.99</price> 
    </book> 
</bookstore>

在字典对象中搜索多路径查询或小枝查询

如果您有一个绝对xpath字典,并且希望匹配//book//last-name,则需要执行3个步骤:

1)迭代字典中的所有键并将它们约简为包含/book的键集,我们称之为set2

2)迭代set2中的所有键,并将它们约简为包含/last-name的键集,我们称其为set3

3)从原始字典中检索set3中的所有条目,您就得到了答案。