Get HTML from XML tag

I had to get HTML from the tag of body this XML file.
The code

$doc = new DOMDocument();
$doc->load('https://m360-dev.opoint.com/api/feeds/f201637e-2524-4a56-8504-73090f532c91/view/');
foreach($doc->getElementsByTagName('document') as $node){
    $body = $node->getElementsByTagName('body')->item(0)->nodeValue;
    print_r($body);
    echo "<hr/>";
}

The output of this code is:

string(594) "
Lördagen den 7 oktober går årets upplaga av Skogsmaran av stapeln. Det 
populära terrängloppet på Vildmarksleden – mellan Skatås i Göteborg och österut 
till Hindås. Ekan Management finns med som sponsor för att främja en aktiv 
och hälsosam fritid. Vill du vara med?! Vi bjuder på deltagaravgiften till 
dig som vill tillbringa en härlig dag i naturen. 21 eller 42 kilometer, 
vandring eller löpning väljer du själv.Vi har ett begränsat antal platser. 
Anmäl ditt intresse via ekan@ekan.com så kontaktar vi dig kring det 
praktiska.Mer information finns på www.Skogsmaran.se
"

Required Conclusion:

<p>
   <text>
    Lördagen den 7 oktober går årets upplaga av Skogsmaran av stapeln. Det 
    populära terrängloppet på Vildmarksleden – mellan Skatås i Göteborg och 
    österut till Hindås. Ekan Management finns med som sponsor för att 
    främja en 
    aktiv och hälsosam fritid. Vill du vara med?! Vi bjuder på 
    deltagaravgiften 
    till dig som vill tillbringa en härlig dag i naturen. 21 eller 42 
    kilometer, 
    vandring eller löpning väljer du själv.
</text>
</p>
<p>
   <text>
      Vi har ett begränsat antal platser. Anmäl ditt intresse via 
      ekan@ekan.com så 
      kontaktar vi dig kring det praktiska.
   </text>
</p>
<p>
  <text>Mer information finns på www.Skogsmaran.se</text>
</p>

But this always returns a string of equivalent HTML in the tag body.

+4
source share
1 answer

Taking the value of node and then just unloading it, if you want HTML, use something like ...

$doc = new DOMDocument();
$doc->load('https://m360-dev.opoint.com/api/feeds/f201637e-2524-4a56-8504-73090f532c91/view/');
foreach($doc->getElementsByTagName('document') as $node){
    $body = $node->getElementsByTagName('body')->item(0);
    foreach ( $body->childNodes as $node )  {
        echo $doc->saveHTML($node);
    }
    echo "<hr/>";
}

You are requesting a document to save HTML from $ body node.

+2
source

Source: https://habr.com/ru/post/1685716/


All Articles