PHP:从特定的XML节点类型获取文本数组?

时间:2009-06-01 15:29:39

标签: php xml php4

我不是PHP或XML的新手,但我是100%全新的用PHP削减XML。我有一个XML字符串,它有几个节点,但我唯一感兴趣的是<关键字>每个不确定数量的节点包含如下的短语:<关键字>蓝钻首饰< / keyword>例如,说字符串看起来像这样:

<xml>
<pointless_node/>
<seq>
<keyword>diamond ring</keyword>
<keyword>ruby necklace</keyword>
<keyword>mens watch</keyword>
</seq>
<some_node/>
</xml>

我想要一个像这样的数组:

['diamond ring','ruby necklace','mens watch']

我尝试查看PHP手册,只是感到困惑,不知道该怎么做。有人可以告诉我如何做到这一点?我使用的是PHP4。

谢谢!

4 个答案:

答案 0 :(得分:1)

  

这会将$ keyword转换为数组   对象。有没有办法得到   来自对象的文字?

当然,看到这个。

$dom = domxml_open_mem($str);
$keywords = $dom->get_elements_by_tagname('keyword');

foreach($keywords as $keyword) {
    $text = $keyword->get_content();
    // Whatever
}

答案 1 :(得分:0)

见:http://www.php.net/simplexml-element-xpath 尝试以下xpath和数组构造

$string = "<xml>
<pointless_node/>
<seq>
<keyword>diamond ring</keyword>
<keyword>ruby necklace</keyword>
<keyword>mens watch</keyword>
</seq>
<some_node/>
</xml>";

$xml = domxml_open_mem($xmlstr)

$xpath = $xml->xpath_new_context();
$result = xpath_eval($xpath,'//keyword');

foreach ($result->nodeset as $node)
{
     $result[] = $node->dump_node($node);
}

编辑:修改代码以反映php 4的要求 编辑:修改为xpath_new_context记录不良的行为(php docs评论指出错误)

答案 2 :(得分:0)

XML_Parser-&gt; xml_parse_into_struct()可能就是您要找的东西。 适用于Php版本&gt; = 4

http://se.php.net/xml_parse_into_struct
http://www.w3schools.com/PHP/func_xml_parse_into_struct.asp

答案 3 :(得分:0)

我认为最简单的是:

$dom = domxml_open_mem($str);
$keywords = $dom->get_elements_by_tagname('keyword');