Как объединить xml файлы в один
Перейти к содержимому

Как объединить xml файлы в один

Как объединить XML-файлы?

у меня есть два xml-файла, которые имеют одинаковую схему, и я хотел бы объединить в один xml-файл. Существует ли простой способ сделать это?

= новый файл, содержащий

6 ответов

«автоматическое слияние XML» звучит как относительно простое требование, но когда вы вдаетесь во все детали, это становится сложным довольно быстро. Слияние с c# или XSLT будет намного проще для более конкретной задачи, как в ответ для модели EF. Использование инструментов для ручного слияния также может быть вариантом (см. это так вопрос).

Для справки (и дать представление о сложности) вот пример с открытым исходным кодом из Java world:XML-файле слияние сделано легко

вернемся к исходному вопросу. В спецификации задачи мало больших серых областей: когда следует учитывать 2 элемента эквивалентно (имеют одинаковое имя, совпадающие выбранные или все атрибуты, или также имеют одинаковую позицию в родительском элементе); как обрабатывать ситуацию, когда исходный или объединенный XML имеют несколько эквивалентно элементы etc.

код ниже предполагает, что

  • мы только заботьтесь об элементах на данный момент
  • элементы эквивалентно если имена элементов, имена атрибутов и значения атрибутов совпадают
  • элемент не имеет несколько атрибутов с одинаковым именем
  • все эквивалентно элементы из Объединенного документа будут объединены с первым эквивалентным элементом в исходном XML-документе.

Он будет производить желаемого результата с исходные фрагменты XML, но если входные XMLs более сложны и имеют повторяющиеся элементы, результат будет больше. интересно:

вот объединенный документ, показывающий, как эквивалентно элементы из документа B были объединены:

Если формат всегда точно такой, в этом методе нет ничего плохого:

удалите последние две строки из первого файла и добавьте вторые файлы при удалении первых двух строк.

посмотрите на команды Linux head и tail который может удалить первую и последние две строки.

Это простое преобразование XSLT что-то вроде этого (которое вы применяете к документу a.xml):

vimdiff file_a file_b приведу лишь один пример:

BeyondCompare является любимым, когда я на windows http://www.scootersoftware.com/

Я закончил использование C# и создал себе скрипт. Я знал, что могу это сделать, когда задавал вопрос, но я хотел знать, есть ли более быстрый способ сделать это, так как я никогда не работал с XML.

сценарий пошел по строкам этого:

и MergeNodes() выглядело примерно так:

его не идеально — я должен вручную указать узлы, которые я хочу объединить, но это было быстро и легко для меня, чтобы собрать и так как у меня есть почти не знаю XML, я счастлив:)

на самом деле лучше, что он объединяет только указанные узлы, так как я использую его для слияния edmx-файлов Entity Framework, и я действительно хочу объединить ssdl, CDSL и MSL-узлы.

способ, которым вы могли бы это сделать, — загрузить набор данных с xml и объединить наборы данных.

Developing.ru

Короче, ситуация: есть очень много (несколько тысяч) однотипных .xml файлов со структурой, как в прикрепленном примере. Структура везде и всегда одна и та же.

Нужно их всех слепить в один полноценный файл.xml Но при этом, удалить из всех файлов в процессе сбора (так чтобы в итоговом не было) некоторые теги. Далее файл должен нормально читаться Exel.

При этом сделать нужно при помощи наиболее универсального (читай — легко редактируемого) средства — то есть как вариант на скрипте CMD, WSH/PoSH, и т.п.

ИЛИ — нужно свести некоторые данные (теги) из всех файлов в одну таблицу (любого читаемого простыми средствами Окон формата).

По дурости своей и ностальгии решил замутить все на обычном CMD, но застрял в процессе: как замутить чтение только части файла, откидывая сразу заголовки:

Есть и более простое решение: поместить все в тег <root>, но не уверен, что Exel переварит такой файл.

А как удалить по маске содержимое тега вместе с ним на голом CMD — вообще не знаю.

Решил смотреть в сторону разпарсинга кучи этих xml в таблицу на PowerShell, о в котором я страшный нубище)))

Накурил такой вот код:

Ну что-то не покатило — ибо как вариант очень вероятный — я натупил.

Во общем прошу помощи в решении! Ибо задача срочная и очень объемная.

Ребята выручайте, надо объединить несколько файлов xml в один. Уже весь интернет «перерыл», но так и не нашёл ответа. Нашёл прогу которая сравнивает два файла (winmerge называется) и делает их одинаковыми (возможно я не нашёл как переносить данные с одного файла в другой), но мне надо добавить в один. Подскажите как это сделать.

п.с. я не программист

Простое склеивание текстовых файлов в один здесь не подойдёт.
Сводный XML-файл должен иметь примерно такую структуру.

</root>[/HTML]Для этого нужно будет написать небольшой скрипт, который будет делать следующее:
— создать выходной XML-файл с заголовочной строкой и пустым корневым тегом.
— найти в указанном каталоге все файлы с расширением .XML, в итоге должен получиться список имён файлов.
— циклом поочерёдно открывать каждый исходный XML-файл и парсером читать данные из его корневого тега.
— добавлять в выходной XML-файл полученные данные в виде дочерних тегов (желательно присваивать каждому тегу уникальное имя).

Такая задачка легко решается на языках типа Java, Python, C#. Программисту средней квалификации на это хватит пары часов.
Но если человек не знаком с программированием, то ему самому это будет не под силу.
Лучше обратиться в раздел «Решите мне задачку» и предложить некоторое вознаграждение.

Объединитель документов

Объединяйте документы онлайн с любого устройства с помощью современного браузера, такого как Chrome, Firefox.

Отправить ссылку на скачивание

  • Выберите порядок объединенных файлов
  • Простое объединение нескольких документов
  • Объединение файлов в один документ
  • Загрузка или отправка результирующего файла в виде вложения электронной почты

Бесплатное Windows-приложение для конвертации, просмотра, объединения файлов

  • Конвертируйте, просматривайте и объединяйте файлы на Вашем компьютере с ОС Windows.
  • Обрабатывайте файлы Word, Excel, PowerPoint, PDF и более 100 других форматов файлов.
  • Без ограничений по размеру файла.
  • Пакетное преобразование нескольких файлов.
  • Одно приложение с богатыми функциями, такими как преобразование, просмотр, слияние, анализатор, сравнение, подпись.
  • Регулярные БЕСПЛАТНЫЕ обновления с новыми функциями приходят каждый месяц.

Как объединить документы онлайн

  • Выберите или перетяните документы, которые необходимо объединить.
  • После завершения загрузки документов можно изменить очередность их объединения перетаскивая иконку документа в области предпросмотра.
  • Нажмите на кнопку Объединить.
  • Нажмите кнопку Скачать и сохраните объединенный документ.

ВОПРОСЫ И ОТВЕТЫ

Другие форматы, поддерживаемые GroupDocs.Merger

Вы также можете объединять документы других форматов. Полный список представлен ниже.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *