2010-09-01 2 views
3

Existe-t-il un moyen de récupérer du code HTML (et JavaScript) contenu dans un élément div?innerHTML dans xPath?

+0

ces fils est-il lié? http://stackoverflow.com/questions/3615356/xpath-doesnt-retrieve-html-as-part-of-what-is-needed http://stackoverflow.com/questions/3615205/xpath-doesnt-retrieve-html -a-part-du-contenu –

+0

La réponse pourrait être oui, mais il n'y a pas d'échantillon d'entrée et est un dup pour d'autres questions. –

Répondre

-1

maintenant sur:

// div [@ id = votre div ']

Si vous ne se soucient pas de la performance?

2

Je ne suis pas un développeur PHP mais je trouve ceci:

function getNodeInnerHTML(DOMNode $oNode) 
{ 
    $oDom = new DOMDocument(); 
    foreach($oNode->childNode as $oChild) 
    { 
     $oDom->appendChild($oDom->importNode($oChild, true)); 
    } 
    return $oDom->saveHTML(); 
} 

de http://www.sitepoint.com/forums/showthread.php?p=4225203

Je ne pense pas que vous pouvez sélectionner le contenu, y compris avec seulement XPath, donc une fonction comme celle-ci peut être nécessaire. Et puis vous sélectionnez votre div comme //div[@id='someID'] etc

-1

Cela vous donnera le outerHTML plutôt que le innerHTML, mais vous pouvez facilement enlever les tags DIV supplémentaires aux deux extrémités.

Exemple de travail:

$xpath = new DOMXPath(@DOMDocument::loadHTML($the_html_code)) ; 
$domElement = $xpath->evaluate("//div[@id='ID_of_the_div']")->item(0) ; 
$outerHTML = $domElement->ownerDocument->saveXML($domElement) ; 
0
$xml=new DOMDOCUMENT(); 
@$xml->loadHTML($htmlcontents); 
$xpath=new DOMXPATH($xml); 
$nodes=$xpath->query($xpath); 

function getHtml($nodes) { 
    $result = ''; 
    foreach ($nodes as $node) { 
     $result .= $node->ownerDocument->saveHtml($node); 
    } 
return $result; 
} 

Source: how to get innerhtml by classname or id using php