XMLWriter无法写入元素

时间:2012-02-12 15:58:30

标签: php element head xmlwriter

Iv发现不可能将任何内容(文本或其他元素)写入head元素,例如

$XML = new XMLWriter();
$XML->openMemory();
$XML->startElement("head");
$XML->writeAttribute("id","head");
$XML->text("lable");
$XML->endElement();
$XML->startElement("div");
$XML->text("div");
$XML->endElement();
echo $XML->outputMemory();

将输出正文中的元素,而不是头部中的元素,但它会生成正确的属性:

<html>
<head id="head">
</head>
<body>
lable
<div>
div
</div>
</body>
</html>

为什么我不能写任何内容?

2 个答案:

答案 0 :(得分:1)

HTML不支持<head>中存在与文本或内容相关的元素。来自W3C recommendation

  
    

HEAD元素包含有关当前文档的信息,例如标题,可能对搜索引擎有用的关键字以及其他不被视为文档内容的数据。

  

通常,您要写入HTML头部的主要元素是<title>元素和任何<meta>元素。我认为以下内容可行:

$XML = new XMLWriter();
$XML->openMemory();
$XML->startElement("head");
$XML->writeAttribute("id","head");
$XML->startElement("title");
$XML->text("My HTML page");
$XML->endElement();
$XML->endElement();
$XML->startElement("div");
$XML->text("div");
$XML->endElement();
echo $XML->outputMemory();

答案 1 :(得分:0)

运行上面提供的完全相同的脚本,我得到以下结果:

<head id="head">lable</head><div>div</div>

由于您的代码甚至没有提及bodyhtml元素,可能会对PHP代码生成的输出进行后期处理吗?