Word i получить xml

как создать XML-файлы из слова

Формат XML предназначен для хранения данных, которые могут быть полезны в работе некоторых программ, сайтов и поддержке определенных языков разметки. Создать и открыть файл в этом формате несложно. Это можно сделать, даже если на вашем компьютере не установлено специализированное программное обеспечение.

XML сам по себе является языком разметки, чем-то похожим на HTML, который используется на веб-страницах. Но если последний используется только для отображения информации и ее правильной разметки, XML позволяет структурировать ее определенным образом, что делает этот язык похожим на аналог базы данных, не требующий СУБД.

Вы можете создавать файлы XML, используя как специализированные программы, так и встроенный текстовый редактор Windows. Удобство написания кода и уровень его функциональности зависят от типа используемого программного обеспечения.

Способ 1: Visual Studio

Вместо этого редактора кода Microsoft вы можете использовать любые его аналоги от других разработчиков. Фактически, Visual Studio — это более продвинутая версия обычного Блокнота. Код теперь имеет специальную подсветку, ошибки автоматически выделяются или исправляются, а специальные шаблоны уже загружены в программу, что упрощает создание больших файлов XML.

Для начала вам необходимо создать файл. Щелкните элемент «Файл» на верхней панели и выберите «Создать…» в раскрывающемся меню. Откроется список, в котором указана запись «Файл».

как создать XML-файлы из слова

Вам будет перенесено окно с выбором расширения файла, соответственно выберите пункт «XML файл».

как создать XML-файлы из слова

Во вновь созданном файле уже будет первая строка с кодировкой и версией. По умолчанию записывается первая версия и кодировка UTF-8, которую вы можете изменить в любой момент. Затем, чтобы создать полный XML-файл, вам нужно записать все, что было в предыдущем операторе.

По окончании работы снова выберите в верхней панели «Файл», затем из выпадающего меню пункт «Сохранить все».

Способ 2: Microsoft Excel

Вы можете создать XML-файл без написания кода, например, используя современные версии Microsoft Excel, что позволяет сохранять таблицы с этим расширением. Однако нужно понимать, что в этом случае у вас не получится создать что-то более функциональное, чем обычный стол.

Этот метод лучше всего подходит для тех, кто не хочет или не умеет работать с кодом. Однако в этом случае пользователь может столкнуться с некоторыми проблемами при перезаписи файла в формате XML. К сожалению, преобразование обычной таблицы в XML возможно только в более новых версиях MS Excel. Для этого воспользуйтесь следующими пошаговыми инструкциями:

  1. Дополните таблицу некоторым содержанием.
  2. Нажмите кнопку «Файл» в верхнем меню.
  3. Откроется специальное окно, в котором нужно нажать «Сохранить как…». Этот пункт находится в левом меню.
  4. Укажите папку, в которой вы хотите сохранить файл. Папка указана в центре экрана.
  5. Теперь вам нужно указать имя файла и в разделе «Тип файла» из выпадающего меню выбрать
    Данные XML».
  6. Нажмите кнопку «Сохранить».

Способ 3: Блокнот

Даже обычный Блокнот вполне подходит для работы с XML, но у пользователя, незнакомого с синтаксисом языка, возникнут трудности, так как в нем придется писать различные команды и теги. Несколько проще и продуктивнее процесс будет в специализированных программах для редактирования кода, например, в Microsoft Visual Studio. В них есть специальные метки и подсказки, которые значительно упрощают работу человеку, не знающему синтаксиса этого языка.

Для этого метода ничего скачивать не нужно, так как в операционной системе уже есть встроенный «Блокнот». Попробуем создать простую XML-таблицу по приведенным инструкциям:

  1. Создайте простой текстовый документ с расширением TXT. Вы можете разместить его где угодно. Открой это.
  2. Начните набирать в нем первые команды. Во-первых, вам нужно установить кодировку для всего файла и указать версию XML, это делается с помощью следующей команды:

    Первое значение — это версия, менять ее не нужно, а второе значение — это кодировка. Рекомендуется использовать кодировку UTF-8, так как с ней прекрасно работает большинство программ и обработчиков. Однако его можно изменить на любое другое, просто набрав желаемое имя.

  3. Создайте первый каталог в вашем файле, написав тег и закрыв его вот так .
  4. Теперь вы можете написать какой-то контент внутри этого тега. Создаем тег и даем ему любое имя, например «Иван Иванов». Готовая конструкция должна выглядеть так:
  5. Внутри тега теперь можно писать более подробные параметры, в данном случае это информация об определенном Иване Иванове. Мы пропишем ваш возраст и местонахождение. 
  6. Если вы следовали инструкциям, вы должны получить тот же код, что и ниже. Когда закончите, найдите «Файл» в верхнем меню и выберите «Сохранить как…» в раскрывающемся меню. При сохранении в поле «Имя файла» после точки должно стоять расширение не TXT, а XML.

как создать XML-файлы из слова

Компиляторам XML необходимо обработать этот код в виде таблицы с одним столбцом, содержащей данные о некоем Иване Иванове.

В «Блокноте» вполне можно создавать такие простые таблицы, но при создании массивов более объемных данных могут возникнуть трудности, так как в обычном «Блокноте» нет функций для исправления ошибок в коде или их выделения.

Как видите, в создании XML-файла нет ничего сложного. При желании его может создать любой пользователь, более-менее умеющий работать на компьютере. Однако для создания полного XML-файла рекомендуется изучить этот язык разметки, по крайней мере, на примитивном уровне.

Содержание

  • 1 Немного об XML
    • 1.1 Способ 1: Visual Studio
    • 1.2 Способ 2: Microsoft Excel
    • 1.3 Способ 3: Блокнот
    • 1.4 Помогла ли вам эта статья?

Конвертер файлов / Документы / Конвертировать в DOC / XML конвертер / DOC в XML

Вы можете перевести DOC документ в XML и во множество других форматов с помощью бесплатного онлайн конвертера.

Как сконвертировать xml в doc?

Шаг 1

Загрузите doc-файл

Выберите файл с компьютера, Google Диска, Dropbox или перетащите его на страницу

Шаг 2

Выберите «в xml»

Выберите xml или любой другой формат, который вам нужен (более 100 поддерживаемых форматов)

Шаг 3

Скачайте ваш xml файл

Подождите пока ваш файл сконвертируется и вы сразу сможете его скачать xml -файл

Microsoft Word Document

Описание

DOC – специальное расширение, соответствующее документам, созданным в текстовом редакторе Microsoft World, до версии 2007 года. В этом формате хранятся сведения о форматировании текстового документа – абзацы, списки, отступы, выравнивания и многое другое. Файлы DOC могут включать в себя не только текстовую информацию, но и многочисленные изображения, графики, сценарии, диаграммы. DOC представляет собой расширение в формате двоичного файла, который начинается с информационного блока, выступающего ключевым элементом всей совокупности файлов данных. Такие двоичные файлы включают в себя довольно большой объем информации о форматировании текстового документа. Традиционно расширение получило широкое распространение для создания документов текстового формата в большом диапазоне ОС. Файлы в этом формате открываются любыми, в том числе современными версиями редактора Word или его аналогами из бесплатных пакетов вроде Open Office, Libre Office или утилитами наподобие Corel WordPerfect.

Технические детали

Первые версии файлового формата DOC приоритетно ориентировались на содержание форматированного текста, но со временем к нему добавилось большое количество встроенных объектов, среди которых встречаются как диаграммы и графики, так и различные медиа-файлы (звуки, видео). Файлы с расширением DOC способны содержать данные о слиянии, благодаря чему шаблон обработки слов может применяться вместе с таблицей либо базой данных.

Программы

Microsoft Word

OpenOffice.org Writer

IBM Lotus Symphony

Apple Pages

AbiWord

Основная программа

Microsoft Word

MIME type

application/msword

application/kswps

Extensible Markup Language

Программы

Microsoft Visual Studio 2013

JAPISoft EditiX

Wattle XMLwriter

MacroMates TextMate

Разработчик

World Wide Web Consortium

MIME type

application/xml

application/x-xml

text/xml

как сделать xml из word

XML-формат предназначен для хранения данных, которые могут пригодиться в работе некоторых программ, сайтов и поддержки определённых языков разметки. Создать и открыть файл с таким форматом не сложно. Это вполне можно сделать, даже если на компьютере не установлено какое-либо специализированное программное обеспечение.

Сам по себе XML — это язык разметки, чем-то похожий на HTML, который используется на веб-страницах. Но если последний применяется только для вывода информации и её правильной разметки, то XML позволяет её структурировать определённым образом, что делает этот язык чем-то похожим на аналог базы данных, который не требует наличия СУБД.

Создавать XML-файлы можно как при помощи специализированных программ, так и встроенным в Windows текстовым редактором. От вида используемого ПО зависит удобство написания кода и уровень его функциональности.

Способ 1: Visual Studio

Вместо этого редактора кода от Microsoft можно использовать любой его аналог от других разработчиков. По факту Visual Studio является более расширенной версией обычного «Блокнота». Код теперь имеет специальную подсветку, ошибки выделяются или исправляются автоматически, также в программу уже загружены специальные шаблоны, которые позволяют упростить создание XML-файлов больших объёмов.

Для начала работы вам нужно создать файл. Нажмите по пункту «Файл» в верхней панели и из выпадающего меню выберите «Создать…». Откроется список, где указывается пункт «Файл».

как сделать xml из word

Вас перебросит в окно с выбором расширения файла, соответственно выбирайте пункт «XML-файл».

как сделать xml из word

В только что созданном файле уже будет первая строка с кодировкой и версией. По умолчанию прописана первая версия и кодировка UTF-8, которые вы можете поменять в любое время. Дальше для создания полноценного XML-файла вам нужно прописать всё то, что было в предыдущей инструкции.

По завершении работы снова выберите в верхней панели «Файл», а там из выпадающего меню пункт «Сохранить всё».

Способ 2: Microsoft Excel

Можно создать XML-файл и не прописывая код, например, при помощи современных версий Microsoft Excel, который позволяет сохранять таблицы с данным расширением. Однако нужно понимать, что в этом случае создать что-то более функциональное обычной таблицы не получится.

Такой способ больше подойдёт тем, кто не хочет или не умеет работать с кодом. Однако в этом случае пользователь может столкнуться с определёнными проблемами при перезаписи файла в XML-формат. К сожалению, проделать операцию преобразования обычной таблицы в XML можно только на самых новых версиях MS Excel. Чтобы это сделать, используйте следующую пошаговую инструкцию:

  1. Заполните таблицу каким-либо контентом.
  2. Нажмите на кнопку «Файл», что в верхнем меню.
  3. Откроется специальное окно, где нужно нажать на «Сохранить как…». Этот пункт можно найти в левом меню.
  4. Укажите папку, куда необходимо сохранить файл. Папка указывается в центральной части экрана.
  5. Теперь вам нужно указать название файла, а в разделе «Тип файла» из выпадающего меню выбрать
    «XML-данные».
  6. Нажмите на кнопку «Сохранить».

Способ 3: Блокнот

Для работы с XML вполне подойдёт даже обычный «Блокнот», однако пользователю, который не знаком с синтаксисом языка, придётся трудно, так как в нём нужно прописывать различные команды и теги. Несколько проще и значительно продуктивнее процесс будет идти в специализированных программах для редактирования кода, например, в Microsoft Visual Studio. В них есть специальная подсветка тегов и всплывающие подсказки, что значительно упрощает работу человеку, плохо знакомому с синтаксисом этого языка.

Для этого способа не потребуется что-либо скачивать, так как в операционную систему уже встроен «Блокнот». Давайте попробуем сделать в нём простую XML-таблицу по данной инструкции:

  1. Создайте обычный текстовый документ с расширением TXT. Разместить его можно где угодно. Откройте его.
  2. Начните прописывать в нём первые команды. Для начала нужно задать всему файлу кодировку и указать версию XML, делается это следующей командой:

    Первое значение — это версия, её менять не обязательно, а второе значение — это кодировка. Рекомендуется использовать кодировку UTF-8, так как большинство программ и обработчиков работают с ней корректно. Однако её можно изменить на любую другую, просто прописав нужное название.

  3. Создайте первый каталог в вашем файле, прописав тег и закрыв его таким образом .
  4. Внутри этого тега теперь можно написать какой-нибудь контент. Создадим тег и присвоим ему любое имя, например, «Иван Иванов». Готовая структура должна быть такой:
  5. Внутри тега теперь можно прописать более подробные параметры, в данном случае это информация о неком Иване Иванове. Пропишем ему возраст и должность. Выглядеть это будет так:

    25
    True

  6. Если вы следовали инструкции, то у вас должен получиться такой же код, как ниже. По завершении работы в верхнем меню найдите «Файл» и из выпадающего меню выберите «Сохранить как…». При сохранении в поле «Имя файла» после точки должно стоять расширение не TXT, а XML.

Примерно так у вас должен выглядеть готовый результат:

25
True

как сделать xml из word

XML-компиляторы должны обработать этот код в виде таблицы с одной колонкой, где указаны данные о неком Иване Иванове.

В «Блокноте» вполне можно сделать несложные таблицы наподобие этой, но при создании более объёмных массивов данных могут возникнуть сложности, так как в обычном «Блокноте» нет функций исправления ошибок в коде или их подсветки.

Как видите в создании XML-файла нет ничего сложного. При желании его может создать любой пользователь, который более-менее умеет работать на компьютере. Однако для создания полноценного XML-файла рекомендуется изучить данный язык разметки, хотя бы на примитивном уровне.

Мы рады, что смогли помочь Вам в решении проблемы.

Задайте свой вопрос в комментариях, подробно расписав суть проблемы. Наши специалисты постараются ответить максимально быстро.

Помогла ли вам эта статья?

Да Нет

Рассмотрим процедуру преобразования объекта базы данных в формат XML:

  1. В окне базы данных выделите необходимый объект щелчком левой кнопки мыши и выберите команду Файл, Экспорт (File, Export) или щелкните по объекту правой кнопкой и выберите в контекстном меню команду Экспорт (Export).
  2. Появится диалоговое окно Экспорт объекта (Export To). В раскрывающемся списке Типы (Save as type) выделите элемент Документы XML (XML Documents). В поле Имя файла (File name) введите название документа HTML и нажмите кнопку Экспорт (Export).
  3. Появится диалоговое окно Экспорт XML (Export XML) (рис. 12.9).
  4. Это диалоговое окно содержит три флажка для трех составляющих документа XML: данных, схемы данных и представления данных (о них см. разд. «Формат XML в Microsoft Office 2002» данной главы). Установите флажки для тех частей документа XML, которые необходимо получить в результате экспорта. Например, если установить одновременно флажки данные (XML) (Data (XML)) и схема данных (Schema of the data), то схема данных будет экспортирована и сохранена отдельно от файла данных XML, в файле XSD. Для таблиц можно экспортировать только данные или их структуру или данные и структуру вместе и не экспортировать представление таблицы в виде Web-страницы: флажок презентация данных (XSL) (Presentation of your data (XSL)) можно снять.

Рис. 12.9. Диалоговое окно Экспорт XML

Замечание

Флажок данные (XML) следует сбросить лишь в том случае, если вы хотите экспортировать только новое представление объекта базы данных, а данные были экспортированы в файл XML раньше. Иначе при открытии полученной Web-страницы будет выдано сообщение об ошибке подключения к источнику данных, а сама страница окажется практически пустой.

  1. Чтобы установить дополнительные параметры преобразования, нажмите кнопку Дополнительно (Advanced) (рис. 12.10).

Рис. 12.10. Вкладка Данные диалогового окна Экспорт XML

  1. Кроме того, это диалоговое окно содержит еще две вкладки для двух оставшихся составляющих документа XML: схемы данных и представления данных. На каждой из этих вкладок можно установить флажок, позволяющий экспортировать соответствующую часть документа XML, указать путь и имя файла, в котором будет сохранена эта часть документа, и задать некоторые дополнительные параметры:
    • на вкладке Данные (Data) с помощью раскрывающегося списка Кодировка (Encoding) можно выбрать кодировку для сохранения содержимого страницы;
    • на вкладке Схема (Schema) с помощью переключателей можно выбрать, экспортировать ли структуру данных в отдельный файл XSD или внедрить ее в файл XML вместе с данными;

Рис. 12.11. Отчет «Счет», открытый в базе данных

  • на вкладке Презентация (Presentation) с помощью переключателей можно выбрать формат представления Web-страницы: обрабатываемый на стороне клиента HTML или на стороне сервера ASP. Если экспортируемый объект содержит рисунки, которые необходимо включить в результирующий документ, можно указать имя папки, в которой они расположены. На этой же вкладке есть поле для ввода имени файла XSL с описанием оформления страницы. Если указанный файл не существует, Access 2002 создаст файл в формате XSL описанием внешнего представления документа (разработчик может использовать его в дальнейшем как основу для разработки файла в формате XSLT для преобразования документа XML в другой формат).

Если потребуется дополнительная информация о представлении данных в формате XML, нажмите кнопку Справка (Help). Информацию о разработке и преобразовании документов XML можно найти на Web-узле Microsoft для разработчиков: .

Рис. 12.12. Отчет «Счет», данные которого преобразованы в формат XML, открытый в Internet Explorer

  1. Нажмите кнопку ОК.
  2. Если предложенные параметры преобразования не были изменены, в результате будут созданы три файла: XML — с данными, XSL — со стилями и НТМ — с представлением преобразованного объекта. Чтобы открыть полученную Web-страницу, требуется открыть в Internet Explorer файл НТМ или ASP, в зависимости от того, какой формат представления был выбран..

К сожалению, подчиненные формы и отчеты, а также связанные рисунки не будут добавлены в документ XML, полученный из объекта базы данных. Однако простые объекты с внедренными рисунками, экспортированные в формат XML, будут выглядеть практически точно так же, как исходные в Access. Вы можете в этом убедиться, сравнив, к примеру, исходный и преобразованный в формат XML отчет «Счет» (Invoice) из базы данных «Борей» (Northwind) (рис. 12.11 и 12.12).

Если данных в источнике данных выбранного объекта много, загрузка Web-страницы в программу просмотра Интренета может занять существенное время.

Замечание

Поскольку сами данные, содержащиеся в таком документе Web, полностью хранятся ‘в файле XML, нет нужды в доступе к базе данных, из которой изначально были взяты эти данные (как, например, и в случае преобразования отчета в формат XML). Это означает, что для обеспечения доступа к такому документу достаточно поместить только упомянутый набор файлов, содержащих описание этого документа, на сервер Web. С другой стороны, это означает, что изменение данных в таком документе возможно лишь с помощью приложений, имеющих доступ к файлу XML и способных воспринять этот формат.

When you open up Word, it allows you to save as Word Open XML format. I’ve seen posts regarding opening up the docx file as a zip and then extracting stuff from there. But what I really want is a way to turn the docx into a single XML exactly like when doing the «save as» action in MS Office. What to do?

And how to do this for the .doc format ?

Note: I would like to do this programmatically. Preferably under Linux development conditions with PHP. But if that’s not available, then other languages will do. Lastly, if it comes down to it, I can consider spinning up a Windows server to do this.

asked Aug 13, 2012 at 10:09

samxli's user avatar

samxlisamxli

1,5365 gold badges17 silver badges28 bronze badges

0

Sorry to resuscitate a dead thread, but I just found an answer for the DOCX files. A DOCX file is just a ZIP archive of XML files. So for extracting the contents of one of its file, v.gr. word/document.xml under a Linux environment, you have to run unzip:

unzip -q -c myfile.docx word/document.xml

For catching the output of this command into the $xml variable of a PHP script, you can issue:

$xml = shell_exec ("unzip -q -c myfile.docx word/document.xml");

Hoping this answer helps for DOCX files. Better late than never.

For DOC files, this method does not work.

answered Jul 7, 2015 at 12:56

Pierre François's user avatar

Pierre FrançoisPierre François

5,7601 gold badge17 silver badges38 bronze badges

4

In Word: file | save as | Word XML Document (*.xml) gives you the Open XML Format you want, as a single XML file

In code using Interop: use Document object’s SaveAs method, using WdSaveFormat.wdFormatXMLDocument as the save format. You should also use the Document.Convert method to update the compatibility to the MS Office version installed.

So, not necessarily a complete demo, but this should give you the right idea:

ActiveDocument.Convert();

WdSaveFormat myNewSaveFormat = WdSaveFormat.wdFormatXMLDocument;
ActiveDocument.SaveAs(newFilePath, myNewSaveFormat); //where newFilePath can be a FileInfo object specifying the new file name and extension (docx)

answered Aug 13, 2012 at 12:54

JohnZaj's user avatar

JohnZajJohnZaj

3,0505 gold badges36 silver badges51 bronze badges

3

8409840image001Продолжаем, начатую ранее тему работы с формами в Word. В предыдущих статьях мы смотрели на формы только с точки зрения “продвинутого пользователя”, т.е. мы создавали документы, удобные для ручного заполнения. Сегодня же я хочу предложить расширить эту задачу и попробовать использовать механизм Content controls для генерации документов.

Прежде, чем мы приступим к нашей непосредственной задаче, хочу сказать пару слов по поводу того, как хранятся в документах Word данные для сontent controls (то как они привязываются к содержимому документа я сознательно пока опущу, но надеюсь вернуться к этому как-нибудь в следующих статьях).

Как мы уже видели ранее (Open Packaging Conventions #2. Собираем MS Word документ руками) вся основная часть документа хранится в Main Document Part. Все остальные компоненты: картинки, данные данные библиографии, … и конечно же данные для content controls привязываются к нему.

Приблизительно как показано на рисунке:

image

Каждый компонент item1.xml, item2.xml и т.д. (в файлах, сформированных Word они называются так и лежат обычно в папке /customXml) хранит данные по каждому подключенному в документ источнику данных. Мы даже это наблюдали ранее, когда только осваивали создание форм в Word в статье Таблицы в формах Word 2013!

Закономерный вопрос – а что такое itemProps1.xml и аналогичные компоненты? В этих компонентах хранятся описания источников данных. Скорее всего, по задумке разработчиков помимо встроенных в документ xml-ек, предполагалось использовать и другие, но пока реализован только этот способ.

Чем полезны нам itemPropsX.xml? Тем, что в них перечислены xml-схемы (их targetNamespace), которые используются в родительском itemX.xml. Это значит, что если мы подключили в документ не одну custom xml, то чтобы найти нужную, нам нужно пробежаться по itemPropsX.xml компонентам и найти нужную схему, а значит и нужный itemX.xml.

Теперь еще один момент. Мы не будем вручную анализировать связи между компонентами и искать нужные, используя только базовый Packaging API! Вместо этого мы воспользуемся Open XML SDK (его сборки доступны через NuGet). Конечно, ранее мы не словом не говорили про этот API, но для нашей задачи от него требуется минимум и весь код будет достаточно прозрачен.

Ну что ж, основное введение сделано, можно приступать к примеру.

По сложившейся традиции возьмем все тот же “Отчет о совещании”, который мы рисовали в статье Таблицы в формах Word 2013. Напомню, что вот так выглядел шаблон документа:

image

А вот так, XML к которому привязывались поля документа

<?xml version="1.0" encoding="utf-8"?>
<meetingNotes xmlns="urn:MeetingNotes" subject="" date="" secretary="">
    <participants>
        <participant name=""/>
    </participants>
    <decisions>
        <decision problem="" solution="" responsible="" controlDate=""/>
    </decisions>
</meetingNotes>

Шаг 1. Создание модели данных

Собственно наша задача не просто сгенерировать документ, а создать (хотя бы в черновом варианте) удобный инструмент для использования как разработчиком, так и пользователем.

Поэтому модель мы объявим в виде структуры С#-классов:

[XmlRoot("meetingNotes", Namespace = "urn:MeetingNotes")]
public class MeetingNotes
{
    public MeetingNotes()
    {
        Participants = new List<Participant>();
        Decisions = new List<Decision>();
    }
 
    [XmlAttribute("subject")]
    public string Subject { get; set; }
 
    [XmlAttribute("date")]
    public DateTime Date { get; set; }
 
    [XmlAttribute("secretary")]
    public string Secretary { get; set; }
 
    [XmlArray("participants")]
    public List<Participant> Participants { get; set; }
 
    [XmlArray("decisions")]
    public List<Decision> Decisions { get; set; }
}
 
[XmlType("decision")]
public class Decision
{
    [XmlAttribute("problem")]
    public string Problem { get; set; }
 
    [XmlAttribute("solution")]
    public string Solution { get; set; }
 
    [XmlAttribute("responsible")]
    public string Responsible { get; set; }
 
    [XmlAttribute("controlDate")]
    public DateTime ControlDate { get; set; }
}
 
[XmlType("participant")]
public class Participant
{
    [XmlAttribute("name")]
     public string Name { get; set; }
}

По большому счету ничего особенного, разве что добавлены атрибуты для управления XML-сериализацией (т.к. имена в модели и требуемой XML немного различаются).

Шаг 2. Сериализация приведенной выше модели в XML

Задача, в принципе, тривиальная. Что называется “берем наш любимый XmlSerializer и вперед”, если бы не одно но

К сожалению, в текущей версии Office, по всей видимости, присутствует баг, который заключается в следующем: если в custom xml перед объявлением основного namespace (того, из которого Word должен брать элементы для отображения), объявить еще какой-нибудь, то повторяющиеся Content controls начинают отображаться не верно (показывается только столько элементов, сколько было в самом шаблоне – т.е. repeating section не работает).

Т.е. вот такой xml работает:

<?xml version="1.0" encoding="utf-8"?>
<test xmlns="urn:Test" attr1="1" attr2="2">
    <repeatedTag attr="1" />
    <repeatedTag attr="2" />
    <repeatedTag attr="3" />
</test>

и вот такой тоже:

<?xml version="1.0" encoding="utf-8"?>
<test xmlns="urn:Test" attr1="1" attr2="2" xmlns:t="urn:TTT">
    <repeatedTag attr="1" />
    <repeatedTag attr="2" />
    <repeatedTag attr="3" />
</test>

а вот такой, уже нет:

<?xml version="1.0" encoding="utf-8"?>
<test xmlns:t="urn:TTT" xmlns="urn:Test" attr1="1" attr2="2">
    <repeatedTag attr="1" />
    <repeatedTag attr="2" />
    <repeatedTag attr="3" />
</test>

я пробовал отправить баг в поддержку Microsoft на Connect, но у меня почему-то закрыт доступ для отправки багов по Office. А обсуждение на форуме MSDN тоже не помогло.

В общем, нужный обходной маневр. Если бы мы формировали XML руками, проблем бы не возникло – мы сделали бы все сами. Однако в данном случае очень хочется использовать стандартный XmlSerializer, который по-умолчанию добавляет несколько своих namespace в выходной XML, даже если эти namespace не используются.

Мы сделаем полное подавление вывода собственных namespace в XmlSerializer. Правда, этот подход сработает, только если они ему и правда будут не нужны (в противном случае они все равно будут добавлены и как раз ДО нашего Печальная рожица).

Собственно, весь код (при условии, что переменная meetingNotes содержит ранее заполненный объект типа MeetingNotes):

var serializer = new XmlSerializer(typeof(MeetingNotes));
var serializedDataStream = new MemoryStream();

var namespaces = new XmlSerializerNamespaces();
namespaces.Add(“”, “”);

serializer.Serialize(serializedDataStream, meetingNotes, namespaces);
serializedDataStream.Seek(0, SeekOrigin.Begin);


Шаг 3. Заносим полученную XML в Word-документ.

Тут мы поступаем следующим образом:

  • копируем шаблон и открываем копию
  • находим в ней нужный custom xml (ищем по namespace “urn:MeetingNotes”)
  • замещаем содержимое компонента, на нашу XML
File.Copy(templateName, resultDocumentName, true);
 
using (var document = WordprocessingDocument.Open(resultDocumentName, true))
{
    var xmlpart = document.MainDocumentPart.CustomXmlParts
        .Single(xmlPart =>
            xmlPart.CustomXmlPropertiesPart.DataStoreItem.SchemaReferences.OfType<SchemaReference>()
            .Any(sr => sr.Uri.Value == "urn:MeetingNotes"));
 
    xmlpart.FeedData(serializedDataStream);
}

Все! У нас готовый документ-отчет по совещанию. Причем, мы реализовали весьма удобный для повторного использования подход (источником данных для данного отчета может служить все, что угодно).

Как поиграться?

Пример, который приведен в статье, можно как и ранее найти на GitHub.

Если же хочется попробовать пример в деле (и не хочется разбираться в коде), можно посмотреть Web-реализацию примера генерации отчета, а исходный код этого примера найдется там же на Codeplex, но в соседней ветке.

image

I want to see my .docx in its pure XML format.

Various application like internet browsers and visual studio will open the file up in Word for me.

I’ve also tried renaming the document to .xml extension and it just opens up in notepad showing a bunch of unintelligible text.

user1035174's user avatar

user1035174

2071 gold badge3 silver badges9 bronze badges

asked May 2, 2011 at 23:30

RoboShop's user avatar

It’s a zipped file. Rename it ending in .zip to view it.

answered May 2, 2011 at 23:43

Hello71's user avatar

Hello71Hello71

8,3675 gold badges39 silver badges44 bronze badges

9

Working on macOS, and don’t want to install any software to see the XML from your .docx documents? Just open up the terminal and:

cd path/to/your/file.docx
unzip file.docx -d file-content

As mentioned above, .docx files are «disguised» zip files, and unzip is installed by default on macOS. After using it, your file-content folder will contain the various .xml files composing the Word document.

answered Mar 19, 2019 at 16:44

Clorichel's user avatar

ClorichelClorichel

2912 silver badges4 bronze badges

1

I unpacked the zip file en edited the document.xml using Notepad++ (Plugins/XML tools/Check XML syntax now). Notepad++ noticed me at swapped elements, I placed the elements in a more logical order and repeated the steps until no more issues were found. Then I copied all the files directly into zip using Total Commander and finally renamed it back to *.docx. Word happily opened the file.

What I am saying is that if Word still refuses to open the file then there may be some more issues in one or more of xml files.
Tip: use IE to quickly check an XML-file. If you see only flat text or even nothing at all, you can bet there is something wrong with the xml.

answered Jun 6, 2017 at 14:10

Victor's user avatar

Just learned today that you can get at the raw XML from foo.docx from the cygwin ( linux-like ) commandline

unzip  -q -c 'foo.docx' word/document.xml

answered Sep 29, 2020 at 18:52

David Dyck's user avatar

Понравилась статья? Поделить с друзьями:
  • Word house бюро переводов
  • Word i открывает ворд файл
  • Word i без точки
  • Word house агентство переводов
  • Word house in latin