将DOCX / Word生成的XML转换为JSON

时间:2019-06-06 10:05:18

标签: php json xml openxml docx

我正在尝试通过PHP将Word生成的XML文件转换为JSON。

我环顾四周,发现所有XML文件的最佳情况是以下代码(即使在PHP文档中):

$xml = simplexml_load_string($xml_string);
$json = json_encode($xml);
$array = json_decode($json,TRUE);

问题是,在simplexml_load_string之后,我得到了一个空的SimpleXMLElement对象,其余步骤实际上无法完成。 xml本身的开头是:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<w:wordDocument 

,并且标记的前缀为w:。 我尝试删除w:,但是函数再次返回空对象。知道我可能会缺少什么吗?这种生成的XML有什么特别的地方吗?

2 个答案:

答案 0 :(得分:1)

@ThW is正确:请勿将OOXML转换为JSON。这无济于事。

OOXML(DOCX背后的标准)的复杂性不会通过转换为JSON来解决。成功的JSON转换将具有挑战性,并且只能真正帮助我们理解将 XML用于文档,将JSON用于数据 的一般建议。

另请参见JSON or XML? Which is better?并注意:

  • OOXML是文档而不是数据的现有高度复杂的标准。
  • 现有的OOXML工具基础结构是100%基于XML的。
  • 代表文件要求代表混合内容 – JSON并非旨在执行某些操作。 1

1 具有讽刺意味的是,    OOXML中很少使用混合内容:通常运行文本    包装在w:r/w:t元素中。如果您正在寻找灵感,    一个基于JSON的DOCX表示就是可能。    如果您想了解JSON如何驯服DOCX    复杂性,这也应有所帮助。 :-)

答案 1 :(得分:0)

查看以下问题:Simplexml_load_string($string) returns an empty object but $string contains xml? code below

非常相似。

您可以尝试打印$ xml吗? 也许错误不是simplexml_load_string,而是json_encode ...

BR 马克