使用js和php查找xml节点之间的关系

时间:2013-01-19 18:36:28

标签: php xml relationship traversal similarity

这更像是一个推测性的问题,关于你们所认为的是我所遇到的特定问题的最佳方法或最聪明的方法。

我正在开发一个Web应用程序,它主要由一个巨大的XML树驱动。应用程序的要点是根据它们之间的关系随机生成一个合适的节点序列。

节点的分类确实很好,但初始选择需要在很大程度上是随机的,下一个选择需要基于第一个节点。选择应该是随机的,但每个选择之间不应该有明显的逻辑相似性。

例如,给出以下树:

<things>
    <foods>
        <fruits>
            <fruit>apple</fruit>
            <fruit>orange</fruit>
            <fruit>melon</fruit>
            <fruit>banana</fruit>
            <fruit>grape</fruit>
        </fruits>
        <vegetables>
            <vegetable>potato</vegetable>
            <vegetable>carrot</vegetable>
            <vegetable>onion</vegetable>
            <vegetable>leek</vegetable>
        </vegetables>
    </foods>
    <animals>
        <birds>
            <bird>penguin</bird>
            <bird>ostrich</bird>
            <bird>parrot</bird>
            <bird>crow</bird>
            <bird>emu</bird>
        </birds>
        <fish>
            <fish>cod</fish>
            <fish>plaice</fish>
            <fish>salmon</fish>
            <fish>shark</fish>
            <fish>tuna</fish>
        </fish>
    </animals>
</things>

...如果选择的第一个项目是鲨鱼,那么金枪鱼是一个近亲,虽然鸟类中的一个项目也可以访问,因为它具有一定的相似性 - 它是一个生物。然而,蔬菜完全不相关,不应该被选中。

考虑到我的xml树绝对庞大,我需要一种智能的方法来执行相似性检查。

非常感谢任何想法,意见或指导。我已经在这方面寻找了一个解决方案,但到目前为止已经提出了很少的解决方案。

提前致谢!

1 个答案:

答案 0 :(得分:1)

相当大,一个8.5 MB的文件!...你计划在飞行中使用它?这就是为什么我说数据映射/属性标记并将其全部存储在数据库中会更有效。

我看到每个<synset>都有一个wnid和一个字,并且包含了所有<synset>个标签,这些标签是其中的一个子集。这就是建议的来源。说,Shark已被选中...然后我们可以搜索在其属性(sysnet?)中包含此单词的最顶层gloss节点,然后选择{{1}中的所有单词此标记内的标记....可以作为“类似项目”...