我有一个具有这种结构的 XML 映射文件:
<mappings>
<mapping path="first">
<parameter name="client_identifier">value1</parameter>
<parameter name="device_identifier">value2</parameter>
<parameter name="network_identifier">value3</parameter>
</mapping>
<mapping path="second">
<parameter name="client_identifier">value1</parameter>
<parameter name="device_identifier">value2</parameter>
<parameter name="network_identifier">value4</parameter>
</mapping>
<mapping path="third">
<parameter name="client_identifier">value1</parameter>
<parameter name="device_identifier">value2</parameter>
</mapping>
<!-- hundreds/thousands more -->
</mappings>
客户向我的应用程序发出请求,并根据他们请求中包含的一些参数返回一些文件。我上面的映射文件将参数映射到正确的文件。元素中的path
属性mapping
是包含这些文件的目录的文件路径。
我从上到下解析文件,一次操作一个映射,最坏的情况是 O(n)。如果其中的所有参数都<mapping>
与客户端请求中的参数匹配,我将返回目录值path
。
示例客户端请求
client_identifier = value1
device_identifier = value2
network_identifier = value10213
The third mapping with path=third will be returned because the other mappings don't match network_identifier.
因为由于所有可能的组合,这个文件可以增长到大量的映射,所以我想知道是否有一些数据结构(决策树)可以更快地解析/比较。
文件本身必须保持相同的结构,但我可以解析它并在内存中创建不同的结构。