你已经得到了无效的XPath查询需要被固定的,因为一个无效的XPath查询总是会导致错误。你不能使用它的结果来获取节点。
不幸的是,xpath查询无效,因为XML无效。所以你不能使用xpath查询(或者进一步测试它/继续编写它)而不先修复XML。
从您在问题中提供的XML中,显然缺少w-prefix的名称空间声明。
您需要启用最高级别的错误报告(E_ALL
),显示开发环境中的错误以及错误日志记录。然后,您可以按照错误日志:
Warning: DOMDocument::loadXML(): Namespace prefix w on document is not defined in Entity, line: 1 in /tmp/execpad-1d8a88cab4fd/source-1d8a88cab4fd on line 15
Warning: DOMDocument::loadXML(): Namespace prefix w on body is not defined in Entity, line: 2 in /tmp/execpad-1d8a88cab4fd/source-1d8a88cab4fd on line 15
Warning: DOMDocument::loadXML(): Namespace prefix w on p is not defined in Entity, line: 3 in /tmp/execpad-1d8a88cab4fd/source-1d8a88cab4fd on line 15
Warning: DOMDocument::loadXML(): Namespace prefix w on r is not defined in Entity, line: 4 in /tmp/execpad-1d8a88cab4fd/source-1d8a88cab4fd on line 15
Warning: DOMDocument::loadXML(): Namespace prefix w on t is not defined in Entity, line: 5 in /tmp/execpad-1d8a88cab4fd/source-1d8a88cab4fd on line 15
Warning: DOMXPath::query(): Undefined namespace prefix in /tmp/execpad-1d8a88cab4fd/source-1d8a88cab4fd on line 17
Warning: DOMXPath::query(): Invalid expression in /tmp/execpad-1d8a88cab4fd/source-1d8a88cab4fd on line 17
Fatal error: Call to a member function item() on a non-object in /tmp/execpad-1d8a88cab4fd/source-1d8a88cab4fd on line 18
由于这些节目,也有很多问题,这到底呈现XPath查询无效,最后把你的整个脚本制止XML。
如果设置一个变量,然后检查下一行,如果它是set =没必要。还要考虑将代码从提取zip文件与执行XML解析中分离出来。这绝不能在一个地方。此外,您的问题对于更多在这里进行解压缩的用户来说会更有意义。 – hakre 2013-05-03 16:57:15
另外,在提出一个普遍问题之前(比如描述一个故事的长描述是什么以及什么不是等等),首先检查错误消息。给出具体的信息出了什么问题。我给你留个答案来表明这一点。 – hakre 2013-05-03 17:00:38
考虑给https://github.com/PHPOffice/PHPWord一个尝试。它可能使事情变得更容易,因为它专门针对Word。 – Gordon 2013-05-03 17:29:28