我不是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。
谢谢!
答案 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');