PHP: Obtenir tableau de texte à partir de type de noeud XML particulier?
Question
Je ne suis pas tout à fait nouveau pour PHP ou XML mais je suis 100% nouveau pour éplucher XML avec PHP. J'ai une chaîne XML qui a plusieurs nœuds, mais les seuls que je suis insterested en sont les
<xml>
<pointless_node/>
<seq>
<keyword>diamond ring</keyword>
<keyword>ruby necklace</keyword>
<keyword>mens watch</keyword>
</seq>
<some_node/>
</xml>
Je veux un tableau comme ceci:
['diamond ring','ruby necklace','mens watch']
J'ai essayé de regarder le manuel PHP et juste se confondre et ne sais pas quoi faire. Quelqu'un peut-il s'il vous plaît me promener à travers comment faire? J'utilise PHP4.
MERCI!
La solution
Cela transforme les mots clés $ dans un tableau de Objets. Y at-il un moyen d'obtenir la texte des objets?
Bien sûr, voir.
$dom = domxml_open_mem($str);
$keywords = $dom->get_elements_by_tagname('keyword');
foreach($keywords as $keyword) {
$text = $keyword->get_content();
// Whatever
}
Autres conseils
XML_Parser-> xml_parse_into_struct () pourrait être ce que vous cherchez. Fonctionne pour les versions Php> = 4
http://se.php.net/xml_parse_into_struct
http://www.w3schools.com/PHP/func_xml_parse_into_struct.asp
Je pense que le plus simple est:
$dom = domxml_open_mem($str);
$keywords = $dom->get_elements_by_tagname('keyword');
voir: http://www.php.net/simplexml-element-xpath Essayez la construction XPath et tableau suivant
$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);
}
edit: code modifié pour refléter les exigences php 4 edit: modifié pour tenir compte du comportement mal documenté de xpath_new_context (php docs commentaires signalent l'erreur)