获取标记内容

时间:2011-04-19 19:06:33

标签: php xml dom

我有以下xml结构

<description>
    <category id="HBLMENEURSPALGA" order="83500">Spa. Handball Liga Asobal
    </category>
    AMAYA Sport San Antonio - C.BM.Torrevieja
</description>  

使用以下代码

  

温泉。手球Liga Asobal AMAYA运动   圣安东尼奥 - C.BM.Torrevieja

但我想要这个:

  

AMAYA Sport San Antonio -   C.BM.Torrevieja

$teams  =   $game->getElementsByTagName("description");
               foreach ($teams as $team)
               {
                     $info      =   $team->nodeValue;
               }

2 个答案:

答案 0 :(得分:2)

您需要指向正确的节点。您指向的此节点实际上是整个description节点,而您需要指向包含所需字符串的(隐式)文本节点。

解决方案(如果字符串始终排在最后):

$teams = $xml->getElementsByTagName("description");
foreach ($teams as $team)
{
    $info = $team->lastChild->nodeValue;
    echo "info: $info\n";
}

答案 1 :(得分:0)

您需要循环childNodes的{​​{1}}并检查$team是否

nodeType == XML_TEXT_NODE

这是beacuse文本也是一个节点(因此需要循环childNodes ),其foreach ($teams as $team) { foreach($team->childNodes as $child) { if ($child->nodeType == XML_TEXT_NODE && trim($child->nodeValue) != '') { $info = $child->nodeValue; break; } } } 值为nodeType(3)

我也在检查XML_TEXT_NODE是非空的,因为节点之间的空白也可以被视为textNodes ..