【问题标题】:Laravel - DOMDocument::loadXML(): Opening and ending tag mismatch - PhpWord errorLaravel - DOMDocument::loadXML():开始和结束标签不匹配 - PhpWord 错误
【发布时间】:2016-08-27 13:58:44
【问题描述】:

我有 3 个用 HTML 编写的 Blade 文件,我目前正在使用 WKHTMLTOPDF 将它们导出为 PDF 格式,我现在想将相同的 HTML 文件导出为 Word 文档。

到目前为止,我能找到的最好的 Laravel 包是 PhpWord

代码片段:

<div class="page-break"></div>

<h3>Introduction</h3>

<p></p>

<p></p>

到目前为止我的代码:

$phpWord = new \PhpOffice\PhpWord\PhpWord();
$section = $phpWord->addSection();    
$report = view('reports.audit-report', $data)->render();

\PhpOffice\PhpWord\Shared\Html::addHtml($section, $report, true);

$objWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, 'Word2007');
$objWriter->save('helloWorld.docx');

目前正在返回此错误:

DOMDocument::loadXML():开始和结束标记不匹配:链接第 1 行 和实体中的 div,行:1

烦人的是,无论我删除哪一行,该错误始终存在,直到我从字面上删除 HTML 的每一行!

我可以通过使用以下代码来防止此错误发生:

libxml_use_internal_errors(true);

然后,它返回:

Html.php 第 136 行中的 ErrorException:试图获取非对象的属性

以前有没有人成功解决过这些错误?如果您需要更多代码,请告诉我。非常感谢。

【问题讨论】:

  • 只是出于好奇,问题可能是没有容器标签吗?即一个
  • 我的 HTML 文件没有 标签,但是,我刚刚添加了它们并返回相同的错误。

标签: php xml laravel laravel-5 phpword


【解决方案1】:

我遇到了同样的问题。我已将其修复为如下代码。

$doc = new DOMDocument();
$doc->loadHTML($str);
$doc->saveHTML();
\PhpOffice\PhpWord\Shared\Html::addHtml($section, $doc->saveHtml(),true);

【讨论】:

  • 我已将$doc-&gt;saveHtml() 替换为$doc-&gt;saveXml()
【解决方案2】:

addHtml() 方法将提供的字符串加载为 XML。这意味着它也必须是有效的 XML。换句话说,您将不得不使用 XHTML。

错误消息表明您在第 1 行中有一个 link 标记。link 是 (X)HTML 中的一个空元素。保存为 HTML 将如下所示:

<link rel="stylesheet" type="text/css" href="style.css">
<div>Some Content</div>

这不是有效的 XML 有两个原因。这里没有根元素,但是这是addHtml()添加的,link元素没有关闭,触发错误。

一个有效的 XHTML 片段如下所示:

<link rel="stylesheet" type="text/css" href="style.css"></link>
<div>Some Content</div>

或者这个:

<link rel="stylesheet" type="text/css" href="style.css"/>
<div>Some Content</div>

在 XML 中,空标签可以写成&lt;link&gt;&lt;/link&gt;&lt;link/&gt;&gt; 之前的 / 直接关闭了开始标签。只是开始标记在 XML/XHTML 中无效,但在 HTML 中有效。

所以你需要确保你的 Blade 文件是有效的 XHTML 片段。

【讨论】:

  • 我在实体中遇到错误属性构造错误,行:1
  • 谁能帮忙
猜你喜欢
  • 2021-03-26
  • 2012-09-29
  • 1970-01-01
  • 2014-10-19
  • 1970-01-01
  • 2016-09-15
  • 1970-01-01
  • 2021-09-23
  • 2012-04-01
相关资源
最近更新 更多