【问题标题】:Manage XML in PHP (Glossword)在 PHP 中管理 XML(术语表)
【发布时间】:2013-11-19 08:49:03
【问题描述】:

XML 代码:

<?xml version="1.0" encoding="UTF-8"?> 
<glossword version="1.8.11">
<line>
<term t1="L" t2="O" t3="B" uri="lobby" id="1187"><![CDATA[lobby]]></term>
    <defn>
        <abbr lang="025"><![CDATA[]]></abbr><![CDATA[Grupo de personas influyentes, organizado para presionar en favor de determinados intereses. La actividad se denomina lobbying y quien la practica lobbista.<br />Un ejemplo de lobby turístico en España es Exceltur; el Skal Club sería un lobby turístico internacional.]]>
        <syn><![CDATA[grupo de presión]]></syn>
        <see link="Exceltur"><![CDATA[Exceltur]]></see>
        <see link="Skal International"><![CDATA[Skal International]]></see>
    </defn>
    <defn>
        <abbr lang="025"><![CDATA[]]></abbr><![CDATA[Vestíbulo de un hotel y de otros establecimientos como cines, teatros, restaurantes, etc., especialmente si es grande.]]>
    <syn><![CDATA[hall, vestíbulo]]></syn>
        <see link="Tururu"><![CDATA[Tururu]]></see>
        <see link="Lalala"><![CDATA[Lalala]]></see>
    </defn>
</line>
</glossword>    

您好,我需要有关在 php 中管理此 XML 代码的帮助。对这个 XML 的快速总结是,它关于某个“术语”可能有不同的定义 (defn),每个定义可能有不同的同义词 (syn),另见 (see)...等。我无法检索“(syn)”和“(see)”标签之间的数据。这个 XML 是由一个(行)标签形成的,它是“术语”,它包含了其中的所有内容。

这是我用来尝试检索某个标签中所有数据的代码:

foreach ($xml->line as $line){

    if($line->defn->see){

        foreach($line->defn->see as $seealso){ 

            $seealso = (array)$seealso;

            $model->addSeealso($idtermino,$seealso[0]);
     }
    }
 }

问题是我只能检索第一个标签之间的数据。例如,我只能获得“grupo de presión”,但无法以任何方式检索“hall, vestíbulo”。其余标签也会发生这种情况。

提前感谢您的帮助!

【问题讨论】:

    标签: php xml object


    【解决方案1】:

    您需要遍历您的 defn 节点。试试这样的:

    foreach ($xml->line as $line){ // Only if you can have several 'lines'
        foreach($line->defn as $defn){
            foreach($defn->see as $seealso){
    
                $seealso = (array)$seealso;
    
                $model->addSeealso($idtermino,$seealso[0]);
         }
        }
     }
    

    【讨论】:

    • 谢谢亚瑟,这很有帮助。当我看到它时,我就像O_O一样,为什么我没有想到呢?!哈哈,再次感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-20
    • 1970-01-01
    • 2014-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多