返回

如何提取 DOMDocument HTML 无额外标签包装?

php

提取 DOMDocument HTML 无额外包装

问题

当输出 DOMDocument 时,经常出现一个问题:内容会被 XML、HTML、bodyp 标签包装。这可能导致不必要的复杂性和代码重复。

解决方案

有两种方法可以解决此问题:

使用 saveHTML() 方法

saveHTML() 方法会将整个 DOMDocument 保存为 HTML 字符串,包括 HTML、bodyp 标签包装。对于不需要自定义输出的情况,这是一个简单直接的方法。

使用 XSLT 转换

XSLT 转换提供了一种更灵活的方法来将 DOMDocument 转换为 HTML 字符串,而不添加任何额外的包装。这涉及使用 XSLT 样式表来定义所需的输出。

具体步骤

使用 XSLT 转换:

  1. 创建一个 XSLT 样式表,它将 DOMDocument 转换为 HTML 字符串。
  2. 创建一个 XSLTProcessor 对象。
  3. 将 XSLT 样式表导入 XSLTProcessor 对象。
  4. 使用 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、bodyp 标签包装。
  • 使用 XSLT 转换提供了更多的灵活性,但需要更多设置和自定义。

结论

根据你的具体要求,可以选择最合适的方法来提取 DOMDocument HTML。无论是使用 saveHTML() 方法还是 XSLT 转换,这些方法都能有效解决不必要的标签包装问题。

常见问题解答

Q:何时应该使用 saveHTML() 方法?

  • 当你需要将整个 DOMDocument 保存为 HTML 字符串时,并且不需要自定义输出。

Q:何时应该使用 XSLT 转换?

  • 当你需要更灵活地控制输出,并且想要自定义 HTML 字符串时。

Q:如何创建 XSLT 样式表?

  • 使用 XSLT 语言创建 XML 文档来定义所需的输出。

Q:saveHTML() 方法和 XSLT 转换有什么区别?

  • saveHTML() 方法添加了 HTML、bodyp 标签包装,而 XSLT 转换允许自定义输出。

Q:哪种方法更好?

  • 取决于你的具体需求。对于简单的输出,saveHTML() 方法就足够了。对于更复杂的输出,XSLT 转换提供了更多的灵活性。