在PHP中更轻松地管理DOM元素的创建

时间:2011-06-02 09:52:22

标签: php dom

我正在尝试找到一种更简单的方法来创建<td>元素并在其中插入文本值。

必须有一种比为每个<td>元素创建新变量更简单的方法,对吧?也许用一些抽象来创造一个类?或者我可能做错了吗?

按此速率创建7 <td> s将要求我创建7个变量,每个变量有7个不同的createTextNodes,另外还有14个appendChild()行。

对于仅有7 <td> s,这将是28行。这对我来说似乎太过分了。更不用说表中有多个<tr>。有没有办法缩短我可以键入的行数来创建类似的东西:

<table>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</table>

我正在做的简短示例代码:     

$doc = new DOMDocument;

$table = $doc->createElement('table');

        $doc->appendChild($table);

        $tr1 = $doc->createElement('tr');
        $table->appendChild($tr1);

        $td1 = $doc->createElement('td');
        $tr1->appendChild($td1);

        $td1_1 = $doc->createElement('td');
        $tr1->appendChild($td1_1);

        $td1_2 = $doc->createElement('td');
        $tr1->appendChild($td1_2);

        $title1 = $doc->createTextNode('This is title #1');
        $title2 = $doc->createTextNode('This is title #2');
        $title3 = $doc->createTextNode('This is title #3');

        $td1->appendChild($title1);
        $td1_1->appendChild($title2);
        $td1_2->appendChild($title3);

        echo $doc->saveXML();

?>

3 个答案:

答案 0 :(得分:3)

您可以直接将文字添加到元素中:

$doc->createElement('td', 'This is title #1');

除此之外,在方法调用方面还有很多要缩短的地方。 DOM 是一个详细的API。

答案 1 :(得分:1)

循环是你的朋友

$added=array();
for($i=0;$i<7;$i++) {
   $added[]= $doc->createElement('td');
   $tr1->appendChild($td1);

}

答案 2 :(得分:0)

你知道SimpleXML吗?特别是:simplexml_load_string()你可以传递一个XML片段,它会把它转换成一个对象:

$xml=simplexml_load_string("<an><element>This is text</element></an>");
echo $xml->element; // => This is text

不容易。除非您只是连接字符串和create a DOM Document from the resulting pseudo-XML以通过检查返回值来测试它是否格式正确。