PHP DOM列表元素

PHP DOM列表元素,php,object,dom,html-lists,Php,Object,Dom,Html Lists,我试图添加html列表ul的新元素,结果得到无效的html文件 public function createChild() { $args=func_get_args(); $child = $this->dom->createElement($args[1]); $result=$args[0]->appendChild($child); return $result; } 我如何使用它 $p=$tpl->createChild($di

我试图添加html列表ul的新元素,结果得到无效的html文件

public function createChild()
{
    $args=func_get_args();
    $child = $this->dom->createElement($args[1]);
    $result=$args[0]->appendChild($child);
    return $result;
}
我如何使用它

$p=$tpl->createChild($div,'p');
$list=$tpl->createChild($div,'ul');
$tpl->createChild($list,'li');
结果

<div class="Menu" id="Base">
<p></p>
<ul><li></ul>
</div>

如果我尝试在其他地方添加li,也不要得到结束标记。

您使用过验证器吗

取决于doctype。这至少不是无效的HTML5,似乎不必关闭lis


li HTML标记通常需要一个值

您可以尝试为li使用另一个addChild,并将该值作为参数

if ($args[2] != '') {
   $child = $this -> dom -> createElement($args[1], $args[2]);
]
你的第二部分

<li></li>
省略了。对于空值,请使用空格“&bsp;”。 这可能是由于页面上的一些HTML错误造成的

结果应该是:

<div class="Menu" id="Base">
<p></p>
<ul><li>&bsp;</li></ul>
</div>


$tpl -> createChild($list, 'li', '&bsp;');

对整个页面进行HTML验证。

可能是因为您将li附加到div而不是ul?在这种情况下,它将添加到ul$dom=new DOMDocument之后;libxml\u使用\u内部错误序列;libxml_清除_错误;因为PHPDOM不理解html5标记
<div class="Menu" id="Base">
<p></p>
<ul><li>&bsp;</li></ul>
</div>


$tpl -> createChild($list, 'li', '&bsp;');