且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

使用PHP将xml转换为html

更新时间:2023-02-23 11:21:55

在PHP中使用xslt很容易。如果你在文件data.xml中获得了xml并且在script.xsl中获得了xslt-script,那么这就是所有要做的事情:

 <?php 
$ proc = new XsltProcessor;
$ proc-> importStylesheet(DOMDocument :: load(data.xsl));
echo $ proc-> transformToXML(DOMDocument :: load(script.xml));
?>

一个简单的xslt脚本可能如下所示:

 <?xml version =1.0encoding =utf-8?> 
< xsl:stylesheet version =1.0xmlns:xsl =http://www.w3.org/1999/XSL/Transform>
< xsl:output method =htmlencoding =UTF-8indent =yes/>
< xsl:template match =/>
< html>
< head>
< / head>
< body>
< xsl:copy-of select =// paragraph/>
< / body>
< / html>
< / xsl:template>
< / xsl:stylesheet>


I want to convert xml data into html. Below is sample xml data and I want to get/convert it in html format.

<content type="html">
  <paragraph id="1291266887">
      <div class="red">
        <span id="main_post_id">
          <p>ten post przedstawia jak wys&#x142;a&#x107;  znacznik&#xF3;w w ust <strong>Ling</strong> -  xyz</p>
          <p>tags znane jako <span class="translation_section  section_2">bezpieczne</span>, b&#x119;d&#x105;  traktowane jako sekcje pkt</p>
          <p>innych materia&#x142;&#xF3;w dziel&#x105;  si&#x119; na <em>literach</em></p>
        </span>
      </div>
  </paragraph>
</content>

i.e. I want to get all the html code contained between <paragraph id="..."></paragraph>. I want to do it using php. When I convert it in array using php, it gives all data in array of div, p, span. But I want whole html contained in <paragraph>..</paragraph> tag in a single array.

Please help needed here. Let me know best ways for this.

Thanks.

It's easy to use xslt in PHP. If you got the xml in file "data.xml" and the xslt-script in "script.xsl" this is all to do:

<?php  
$proc=new XsltProcessor;  
$proc->importStylesheet(DOMDocument::load("data.xsl"));  
echo $proc->transformToXML(DOMDocument::load("script.xml"));  
?>  

A simple xslt-script could look like this:

<?xml version="1.0" encoding="utf-8"?>  
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">  
 <xsl:output method="html" encoding="UTF-8" indent="yes"/>  
  <xsl:template match="/">  
   <html>  
    <head>  
    </head>  
    <body>  
     <xsl:copy-of select="//paragraph"/>  
    </body>  
   </html>  
  </xsl:template>  
</xsl:stylesheet>