What is the fastest way to combine two xml files into one
If I have two string of xml1 and xml2 which both represent xml in the same format. What is the fastest way to combine these together? The format is not important, but I just want to know how can I get rid off or ?
and have something like this :
11 Answers 11
The easiest way to do this is using LINQ to XML. You can use either Union or Concat depending on your needs.
An XSLT transformation could do it:
Pass in the names of the files as parameters, as well as the name of the new root element.
Apply to any XML document, e.g. an empty one.
This is the fastest and cleanest way to merge xml files.
If you want to use the XmlDocument, try this
![]()
If you can guarantee this format you can combine them by doing string manipulation:
- Read the first file, keep everything before «</AllNodes>»
- Read the second file, remove the part up to «<AllNodes>»
- Combine those strings.
This should be the fastest way since no parsing is needed.
That said I would always prefer the safe way to the fast way.
You have two basic options:
Parse the xml, combine the data structures, serialize back to xml.
If you know the structure, use some basic string manipulation to hack it. For example, in the example above you could take the inside of allnodes in the two xml blocks and put them in a single allnodes block and be done.
Best solution to me, based on Jose Basilio answer, slightly modified,
![]()
If I were doing this (using C#), I would create a class that I can deserialize this XML to (you can use xsd.exe to do this), and then loop through all the nodes in the object representing the first piece of XML and «Add» them to the AllNodes property of the object representing the second XML.
Then serialize the second class back out the XML, and it should look like your 3rd example.
![]()
Since you asked for the fastest:
If (and only if) the xml structure is always consistent: (this is pseudo code)
It’s a giant hack but it’s fast. Expect to see it on TheDailyWTF when your colleagues find it.
![]()
In my case the main solution did not work well, the difference was that I had a List for a thousands of files when I take one element and try to merge with the first element I get OutOfMemory exception, I added an empty template with and empty row (NodeA in this case) to solve the weird problem of the memory and run smoothly.
I save the document in other process
-
The Overflow Blog
Linked
Related
Hot Network Questions
Subscribe to RSS
To subscribe to this RSS feed, copy and paste this URL into your RSS reader.
Site design / logo © 2023 Stack Exchange Inc; user contributions licensed under CC BY-SA . rev 2023.3.11.43304
By clicking “Accept all cookies”, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy.
Java. Каким способом объединить xml больших обьемов?

Если имеется в вижу, что есть множество мелких файлов XML общим объёмом 100Мб-1Гб, то применял следующие методы:
1. StringBuilder с заголовком, далее в него дописываю выдранные с помощью RegEx содержимые каждого из XML. В конце записываю в StringBuilder в шапку что требуется (например, число обработанных файлов), добавляю хвост интегрального XML — и вуаля.
2.Если не требуется шапку менять в конце работы, то открываю новый ZIP файл и пишу в его поток, который идёт сразу на диск (или в память, как требуется по ситуации). Получается ещё компактнее, раз так в 20-30 по памяти.
3. Можно и просто в буферизованный файловый поток писать, опять-же (см. пункт 2).
Выдирал всегда RegEx’ом только потому, что условия были простыми: найти начальный и замыкающий теги нужного куска XML. Если желательно форматирование, то можно слегка подшаманить при добавлении очередного найденного куска с дополнительными пробелами, табуляциями и \n(\r).
Как я могу объединить файлы XML?
У меня есть два xml файла, которые имеют одну и ту же схему, и я хотел бы объединиться в один XML файл. Есть простой способ сделать это?
= новый файл, содержащий
6 ответов
«Автоматическое слияние XML» звучит как относительно простое требование, но когда вы переходите ко всем деталям, он становится довольно сложным. Слияние с С# или XSLT будет намного проще для более конкретной задачи, например, в ответе для модели EF. Использование инструментов для ручного слияния также может быть вариантом (см. этот вопрос SO).
Для справки (и чтобы дать представление о сложности) вот пример с открытым исходным кодом из мира Java: Слияние XML стало проще
Вернуться к исходному вопросу. В задаче задаются несколько больших серо-ичных областей: когда 2 элемента должны считаться эквивалентными (имеют одно и то же имя, соответствующие выбранные или все атрибуты, а также имеют ту же позицию в родительском элементе); как обрабатывать ситуацию, когда исходный или объединенный XML имеет несколько эквивалентных элементов и т.д.
В приведенном ниже коде предполагается, что
- нас интересуют только элементы на данный момент Элементы
- эквивалентны, если имена элементов, имена атрибутов и значения атрибутов соответствуют
- элемент не имеет нескольких атрибутов с тем же именем
- все эквивалентные элементы из объединенного документа будут объединены с первым эквивалентным элементом в исходном XML-документе.
Он даст желаемый результат с оригинальными фрагментами XML, но если входные XML более сложны и имеют повторяющиеся элементы, результат будет более. интересным:
Здесь объединен документ, показывающий, как объединены эквивалентные элементы из документа B:
Объединение несколько xml файлы в один. Объединить несколько файлов xml в один xml-файл с помощью xslt
Я хочу объединить несколько xml-файлов в отдельные файлы xml при отправке в папку назначения в BizTalk. Помогите мне преобразовать несколько xml-файлов в один xml-файл с помощью xslt или другого более простого способа. Обратите внимание, что все входные файлы имеют одинаковое пространство имен вход 1
12/7/2008 12:00:00 AM
12/26/2017 12:00:00 AM
12/26/2017 12:00:00 AM
BILIK TIMBALAN PENGARAH (PERJAWATAN)
12/7/2008 12:00:00 AM
Задан Chitra 08.06.2016 в 08:11
2 ответа
Вот один из способов.
Создайте документ, в котором перечислены документы, которые вы хотите объединить в collection.xml:
Затем выполните преобразование XSLT, используя collection.xml в качестве исходного документа и следующую таблицу стилей:
Это будет работать с XSLT 1.0. Если вы перейдете на XSLT 2.0, есть более гибкие способы подачи ввода, например, вы можете использовать функцию collection() для доступа ко всем файлам в каталоге.
Ответ дан Michael Kay 08.06.2016 в 09:15
Если вы используете XSLT 2.0, доступно несколько альтернатив. Во-первых, вы можете определить список документов в качестве параметра таблицы стилей, переданных в виде последовательности строк:
Или вы можете определить документы как коллекцию. Saxon и некоторые другие процессоры отображают URI коллекции в каталог filestore. В Саксоне вы можете сделать:
Что лучше всего работает, зависит от того, как вы решаете, какие входные документы обрабатывать, и вы действительно не объяснили это.
С помощью Excel Get & преобразования качества (Power Query), чтобы объединить несколько файлов, которые имеют одинаковые схемы, из одной папки в одну таблицу. В качестве примера объединение книг бюджета для нескольких отделов, где столбцы те же, но количество строк и значений различия между книгами.
Чтобы начать процесс объединения нескольких файлов, сначала поместите их все в одну папку.
Примечание: Поддерживаются файлы Excel и Access, текстовые файлы, а также файлы в форматах CSV, JSON и XML.

Известные проблемы
При загрузке процедуры объединения двоичных файлов в Excel может появиться такое сообщение об ошибке:

Если вы проигнорируете ошибки и нажмете кнопку ОК , то процесс объединения двоичных файлов будет выполнен и правильно загрузит данные, несмотря на это сообщение. Мы работаем над устранением этой ошибки.
Дополнительные сведения
Вы всегда можете задать вопрос специалисту Excel Tech Community , попросить помощи в сообществе Answers community , а также предложить новую функцию или улучшение на веб-сайте
Некоторые прогнозные модели строятся с использованием данных, которые различными способами модифицированы или преобразованы. Для того чтобы корректно применить эти модели к другим наборам данных, необходимо также выполнить те же преобразования для набора данных, подлежащего скорингу, или эти преобразования должны также
быть отражены в файле модели. Включение преобразований в файл модели является двухступенчатым процессом:
E Соединить файл модели (XML-файл или ZIP-архив) и XML-файл преобразований в новый объединенный XML-файл модели.
Как соединить файл модели и XML-файл преобразований в новый объединенный файл модели:
E Выберите в меню:
Сервис > Объединить XML модели
Диалоговое окно Объединить XML модели
E Выберите XML-файл модели
E Выберите XML-файл преобразований
E Введите путь и имя для нового объединенного XML-файла модели или воспользуйтесь кнопкой Обзор для выбора расположения и имени.
Примечание: Нельзя соединить ZIP-архивы моделей для моделей, которые содержат расщепления (отдельную информацию по модели для каждой группы расщепления) или модели ансамблей, с XML-файлами преобразований.
В этой главе описываются функции, доступные в меню Сервис, а также возможность изменить порядок переменных в списках.
n За информацией о Конструкторе скоринга Вы можете обратиться к разделу Скоринг данных с использованием прогнозных моделей.
n За информацией о слиянии файлов модели и XML преобразования Вы можете обратиться к разделу.
Информация о переменной
В диалоговом окне Переменные показана информация о параметрах выбранной переменной, а именно:
n Метка переменной
n Формат данных
n Пользовательские пропущенные значения
n Метки значений
n Шкалу измерения
Диалоговое окно Переменные

Показать. Столбец Показать в списке переменных, указывает, видима ли в настоящий
момент переменная в редакторе данных и в диалоговом окне списков переменных. Видимость управляется наборами переменных. Дополнительную информацию см. данная тема Наборы переменных на стр. 334.
Перейти. Переход к выбранной переменной в окне Редактора Данных.
Вставка. Вставка выбранных переменных в окно синтаксиса в то место, где находится курсор.
Чтобы изменить свойства переменных, воспользуйтесь закладкой Переменные в Редакторе данных.