【发布时间】:2019-10-15 14:28:39
【问题描述】:
我有这段代码可以读取 Docx 文件的 XML:
$zip = new ZipArchive;
$zip->open($fileName);
$xmlDoc = $zip->getFromName('word/document.xml');
从这里开始,如何使用DOMDocument对其进行修改?
我的目标是使用 PHP 的原生函数,如果有更好的东西,你能给我解释一下为什么使用其他东西而不是 DOMDocument。?
编辑
为了更好的解释,这里是“完整”的代码:
$zip = new ZipArchive;
$zip->open("MyFile.docx");
if (($index = $zip->locateName("word/document.xml")) !== false) {
$text = $zip->getFromIndex($index);
$xml = DOMDocument::loadXML($text, LIBXML_NOENT | LIBXML_XINCLUDE | LIBXML_NOERROR | LIBXML_NOWARNING);
$xmlText = $xml->saveXML();
}
$zip->close();
现在我需要删除一些节点,但是文件是用 PHPWord 修改的,里面满了
<w:t>First text</w:t>
<w:t>Second text</w:t>
<w:t>Third text</w:t>.
我只需要删除其中一个,但我不知道如何捕获我需要的那个。
【问题讨论】:
-
我认为这更像是您打算从文档中提取的内容,有时您可以使用 DOMDocument 阅读它的事实并不意味着它是一个可行的选择。
-
我知道,这就是为什么我需要知道是否有更好的选择。我只需要读取一个 XML 文档,删除一些节点并保存所有完成的工作,但似乎它不适用于 DOMDocument。
-
您能否提供一段更完整的代码来显示您正在尝试做什么以及什么不起作用。应该没有理由让它不工作(据我所知到目前为止的最小细节)。
标签: php xml domdocument docx ziparchive