返回
如何提取 DOMDocument HTML 无额外标签包装?
php
2024-03-08 14:15:01
提取 DOMDocument HTML 无额外包装
问题
当输出 DOMDocument 时,经常出现一个问题:内容会被 XML、HTML、body 和 p 标签包装。这可能导致不必要的复杂性和代码重复。
解决方案
有两种方法可以解决此问题:
使用 saveHTML() 方法
saveHTML()
方法会将整个 DOMDocument 保存为 HTML 字符串,包括 HTML、body 和 p 标签包装。对于不需要自定义输出的情况,这是一个简单直接的方法。
使用 XSLT 转换
XSLT 转换提供了一种更灵活的方法来将 DOMDocument 转换为 HTML 字符串,而不添加任何额外的包装。这涉及使用 XSLT 样式表来定义所需的输出。
具体步骤
使用 XSLT 转换:
- 创建一个 XSLT 样式表,它将 DOMDocument 转换为 HTML 字符串。
- 创建一个 XSLTProcessor 对象。
- 将 XSLT 样式表导入 XSLTProcessor 对象。
- 使用 XSLTProcessor 对象将 DOMDocument 转换为 HTML 字符串。
示例 XSLT 样式表:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<xsl:copy-of select="."/>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
优点和缺点
- 使用
saveHTML()
方法简单直接,但添加了 HTML、body 和 p 标签包装。 - 使用 XSLT 转换提供了更多的灵活性,但需要更多设置和自定义。
结论
根据你的具体要求,可以选择最合适的方法来提取 DOMDocument HTML。无论是使用 saveHTML()
方法还是 XSLT 转换,这些方法都能有效解决不必要的标签包装问题。
常见问题解答
Q:何时应该使用 saveHTML() 方法?
- 当你需要将整个 DOMDocument 保存为 HTML 字符串时,并且不需要自定义输出。
Q:何时应该使用 XSLT 转换?
- 当你需要更灵活地控制输出,并且想要自定义 HTML 字符串时。
Q:如何创建 XSLT 样式表?
- 使用 XSLT 语言创建 XML 文档来定义所需的输出。
Q:saveHTML() 方法和 XSLT 转换有什么区别?
saveHTML()
方法添加了 HTML、body 和 p 标签包装,而 XSLT 转换允许自定义输出。
Q:哪种方法更好?
- 取决于你的具体需求。对于简单的输出,
saveHTML()
方法就足够了。对于更复杂的输出,XSLT 转换提供了更多的灵活性。