0

我对 PHP 或 XML 并不完全陌生,但我对将 XML 与 PHP 配对是 100% 的新手。我有一个 XML 字符串,它有几个节点,但我唯一感兴趣的是 <keyword> 节点,每个节点的数量不确定,每个节点都包含这样的短语:<keyword>蓝色钻石珠宝</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

4 回答 4

1

这会将 $keywords 转换为对象数组。有没有办法从对象中获取文本?

当然,看看这个。

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

foreach($keywords as $keyword) {
    $text = $keyword->get_content();
    // Whatever
}
于 2009-06-03T05:15:20.610 回答
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 注释指出了错误)

于 2009-06-01T15:35:22.740 回答
0

XML_Parser->xml_parse_into_struct() 可能是您正在寻找的。适用于 PHP 版本 >= 4

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

于 2009-06-01T15:40:07.407 回答
0

我认为最简单的是:

$dom = domxml_open_mem($str);
$keywords = $dom->get_elements_by_tagname('keyword');
于 2009-06-02T08:40:32.877 回答