[RESOLU] parse xpath

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] parse xpath

Re: parse xpath

par damien_55 » 05 mai 2013, 23:04

ça fonctionne.

Merci Moogli.

Re: parse xpath

par moogli » 05 mai 2013, 17:04

salut,


je ne comprend pas trop ta question, tu veux prendre le nom du lien et le lien pour insérer dans la base ?

si oui, je ferais comme ça (à partir de ton code)
<?php
$xml = <<<xml
<div id="container_global">
<div>
<div>
<div>
<div>
<div>
<a href="lien1">titre 1</a>
</div>
<div>
<a href="lien2">titre 2</a>
</div>

</div>
</div>
</div>
</div>
</div>
xml;

$pdo = new PDO('mysql:host=localhost;dbname=test', 'root');
$prepare = $pdo->prepare('insert into damien(titre,lien) values(:titre, :lien)');

$dom = new DOMDocument();
$dom->loadHTML($xml);
$xpath = new DOMXPath($dom);
$str_nodes1="//div[@id='container_global']/div/div/div/div/div/a";
$str_nodes2="//div[@id='container_global']/div/div/div/div/div/a/@href";
$result1 = $xpath->query($str_nodes1);
foreach ($result1 as $div1) {
	$titre[]= $div1->nodeValue;
}

$r2 = $xpath->query($str_nodes2);
$i = 0;
foreach($r2 as $lien){
	$prepare->bindValue(':titre',$titre[$i]);
	$prepare->bindValue(':lien',$lien->nodeValue);
	$prepare->execute();
	$i++;
}
@+

parse xpath

par damien_55 » 05 mai 2013, 13:25

Bonjour a tous,

J'ai un fichier que j'essaie de parser avec xpath.
<div>
< a href="lien1">titre 1</a>
</div>
<div>
< a href="lien2">titre 2</a>
</div>
J'accede a ces éléments via dom Xpath, j'obtiens bien les liens ou les titres
$str_nodes1="//div[@id='container_global']/div/div/div/div/div/a";
$str_nodes2="//div[@id='container_global']/div/div/div/div/div/a/@href";
$result1 = $xpath->query($str_nodes1);
$titre ='';
foreach ($result1 as $div1) {
$titre.= $div1->nodeValue .'<br>';
}
echo '<br /><br />'."\n";
Mais je souhaite obtenir ces elements à partir d'un seul foreach afin d'integrer les titres et les liens dans bdd.

ex
foreach ($result1 as $div1) {
$titre.= $div1->nodeValue .'<br>';
$lien.= $div2->nodeValue .'<br>';

$sql= "insert...";
}
Je bloque.