我正在使用PHP中的DOM扩展来构建一些HTML文档,并且我希望输出的格式能够很好地排版(包括换行和缩进),以便于阅读。然而,根据我进行的许多测试:
我只是在寻找一种从DOM扩展接收到的输出中获取格式良好的输出的方法。 注:正如你可能已经猜到的,我不想使用Tidy扩展,因为a)它做了比我需要的更多的事情(标记已经是有效的);b)它实际上会对HTML内容进行更改(例如HTML 5 doctype和一些元素)。 后续:
- 使用"formatOutput = true"在saveHTML()中根本不起作用,只能在saveXML()中起作用。
- 即使我使用了saveXML(),它仍然只对通过DOM创建的元素起作用,而不对通过loadHTML()加载的元素起作用,即使设置了"preserveWhiteSpace = false"。
我只是在寻找一种从DOM扩展接收到的输出中获取格式良好的输出的方法。 注:正如你可能已经猜到的,我不想使用Tidy扩展,因为a)它做了比我需要的更多的事情(标记已经是有效的);b)它实际上会对HTML内容进行更改(例如HTML 5 doctype和一些元素)。 后续:
好的,通过下面的答案的帮助,我弄清楚了为什么DOM扩展没有起作用。虽然给出的示例可以工作,但它在我的代码中仍然无法工作。通过this的评论,我发现如果你有任何文本节点,其中isWhitespaceInElementContent()为true,那么在该点之后将不会应用任何格式。无论preserveWhiteSpace是否为false,都会发生这种情况。解决办法是删除所有这些节点(尽管我不确定这是否会对实际内容产生不良影响)。
saveXML()
时,遇到一些没有值的标签(例如<textarea type="text" name="name"></textarea>
),它会将其转换为<textarea type="text" name="name"/>
。有没有办法解决这个问题? - user2533777