あなたが求めているのは、通常、PHPで利用可能なXSLTProcessorの機能で解決されます。特定の変換はXSLファイルを使用して行われます。
は、ここでは、それがXML要素のための有効なタグ名ではないであろうと、私は<R0> ... <R1>、ない< 0> < 1>を使用
注意を要求している特殊なケースです。
XML-trans.php(CLIファイルを実行する)
<?php
$xslDoc = new DOMDocument();
$xslDoc->load('thexhtml.xsl');
$xmlDoc = new DOMDocument();
$xmlDoc->load('thexhtml.html');
$proc = new XSLTProcessor();
$proc->importStylesheet($xslDoc);
echo $proc->transformToXML($xmlDoc);
?>
thexhtml.xsl
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<root>
<xsl:for-each select="table/tbody/tr">
<xsl:variable name="rowNum" select="position()-1" />
<xsl:element name="R{$rowNum}" >
<xsl:for-each select="td">
<xsl:variable name="colNum" select="position()" />
<xsl:variable name="header" select="/table/thead/tr/th[position()=$colNum]"/>
<xsl:element name="{$header}" >
<xsl:value-of select="text()" />
</xsl:element>
</xsl:for-each>
</xsl:element>
</xsl:for-each>
</root>
</xsl:template>
</xsl:stylesheet>
(テスト用テーブルの一部のより線を有する。)thexhtml.html
<table>
<thead>
<tr>
<th align="left">label1</th>
<th align="left">label2</th>
<th align="left">label3</th>
<th align="left">label4</th>
</tr>
</thead>
<tbody>
<tr>
<td>DATA11</td>
<td>DATA12</td>
<td>DATA13</td>
<td>DATA14</td>
</tr>
<tr>
<td>DATA21</td>
<td>DATA22</td>
<td>DATA23</td>
<td>DATA24</td>
</tr>
<tr>
<td>DATA31</td>
<td>DATA32</td>
<td>DATA33</td>
<td>DATA34</td>
</tr>
</tbody>
</table>
私のテスト結果
php xsl-trans.php > theresult.xml
theresult.xml
<?xml version="1.0" encoding="UTF-8"?>
<root>
<R0>
<label1>DATA11</label1>
<label2>DATA12</label2>
<label3>DATA13</label3>
<label4>DATA14</label4>
</R0>
<R1>
<label1>DATA21</label1>
<label2>DATA22</label2>
<label3>DATA23</label3>
<label4>DATA24</label4>
</R1>
<R2>
<label1>DATA31</label1>
<label2>DATA32</label2>
<label3>DATA33</label3>
<label4>DATA34</label4>
</R2>
</root>
は、私はそれは私がまだupvoteすることはできません
に役立ちますが、それは働いていた願っています。ありがとう! – Aaron