【问题标题】:SimpleXML, find parent node by searching valueSimpleXML,通过搜索值找到父节点
【发布时间】:2014-07-28 11:55:55
【问题描述】:

我下载了一个法语->英语词典来将法语请求(一个单词请求)翻译成英语。

例如,一个用户在搜索输入中输入“voiture”(法语中的汽车)将被翻译成“汽车”,并且“汽车”将在我的数据库中搜索(用户不可见,他认为正在寻找“voiture ")。

所以这是字典的一部分:

SimpleXMLElement Object
(
[entry] => Array
    (
        ...
        ... 
        [7] => SimpleXMLElement Object
            (
                [form] => SimpleXMLElement Object
                    (
                        [orth] => ADN
                        [pron] => ad
                    )

                [gramGrp] => SimpleXMLElement Object
                    (
                        [pos] => n
                        [gen] => masc
                    )

                [sense] => SimpleXMLElement Object
                    (
                        [def] => DNA
                    )
            )
        [8] => SimpleXMLElement Object
            (
                [form] => SimpleXMLElement Object
                    (
                        [orth] => Abkhasie
                        [pron] => abkazi
                    )

                [gramGrp] => SimpleXMLElement Object
                    (
                        [pos] => n
                    )

                [sense] => SimpleXMLElement Object
                    (
                        [def] => Abkhazia
                    )
            )
            ...

所以,[orth] 包含法语单词,而 [def] 包含英语翻译。我会知道如何搜索 [orth] 的值是否存在,如果存在此值,则在 SimpleXMLElement 对象中返回 [def] 的值。

【问题讨论】:

    标签: php xml xpath simplexml key-value


    【解决方案1】:

    这样的事情可能就足够了。由于不确定原始结构,我已经从您的帖子中模拟了 XML,但您应该了解 xpath 查询的概念:

    $languageXml = <<<XML
        <entries>
            <entry>
                <form>
                    <orth>ADN</orth>
                </form>
                <sense>
                    <def>DNA</def>
                </sense>
            </entry>
            <entry>
                <form>
                    <orth>poisson</orth>
                </form>
                <sense>
                    <def>fish</def>
                </sense>
            </entry>
            <entry>
                <form>
                    <orth>voiture</orth>
                </form>
                <sense>
                    <def>car</def>
                </sense>
            </entry>
        </entries>
    XML;
    
    $xml = new SimpleXMLElement($languageXml);    
    $searchTerm = 'voiture';
    
    if($result = $xml->xpath("entry/form/orth[.='$searchTerm']/../../sense")) {
        echo $result[0]->def;
    };
    

    【讨论】:

      猜你喜欢
      • 2012-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多