Преобразование сгенерированного DOCX / Word XML в JSON - PullRequest
2 голосов
/ 06 июня 2019

Я пытаюсь преобразовать сгенерированный Word файл XML в JSON через PHP.

Я осмотрелся и обнаружил, что для всех файлов 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: s, но снова функция возвращает пустой объект. Есть идеи, что я могу упустить? Есть ли что-то особенное в этом типе сгенерированного XML?

Ответы [ 2 ]

1 голос
/ 06 июня 2019

@ ThW - правильно: Не конвертировать OOXML в JSON. Это не поможет.

Сложность OOXML (стандарта, лежащего в основе DOCX) не будет приручена преобразованием в JSON. Успешное преобразование JSON будет непростым делом, и оно действительно поможет оценить общие рекомендации по использованию XML для документов и JSON для данных .

См. Также JSON или XML? Что лучше? и примечание:

  • OOXML - это существующий, очень сложный стандарт для документов , а не данных .
  • Существующая инфраструктура инструментов OOXML основана на 100% XML.
  • Представление документов требует представления смешанного контента & Ndash; что-то, для чего не предназначен JSON. 1

1 По иронии судьбы, смешанный контент редко используется в OOXML: текстовые прогоны обычно завернутый в w:r/w:t элементов. Если вы ищете вдохновение, которое основанное на JSON представление DOCX будет возможным , вот и все. Если вы хотите понять, как JSON не усмирит DOCX сложность, это также должно помочь. :-)

0 голосов
/ 06 июня 2019

проверьте этот вопрос: Simplexml_load_string ($ string) возвращает пустой объект, но $ string содержит xml?код ниже

Это очень похоже.

Не могли бы вы попробовать напечатать $ xml?Может быть, ошибка не в файле simplexml_load_string, а в json_encode ...

BR Marc

...