Suba Sah
Suba Sah

Reputation: 157

Get HTML from XML tag

I had to get HTML from body tag of this XML file.
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/>";
}

Output of this code:

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 [email protected] så kontaktar vi dig kring det 
praktiska.Mer information finns på www.Skogsmaran.se
"

Output wanted:

<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 
      [email protected] så 
      kontaktar vi dig kring det praktiska.
   </text>
</p>
<p>
  <text>Mer information finns på www.Skogsmaran.se</text>
</p>

But this always returns bunch of string equivalent to HTML within body tag.

Upvotes: 4

Views: 75

Answers (1)

Nigel Ren
Nigel Ren

Reputation: 57121

Your taking the node value and then just dumping that out, if you want the HTML, then 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 ask the document to save HTML from the $body node.

Upvotes: 2

Related Questions