Объеденить архив XML файлов в 1 файл
Возникла задача объединить XML Файлы в один для последующей обработки(думаю открыть в Экселе, он создаст структуру, там упорядочу как надо и сохраню в текстовик — может не оптимально, но мне показалось это наиболее быстрым способом чем вникать в структуру).
Сделал объединение файлов таким вот скриптом:
$sPath = 'd:\test inp.zip\ed101' $search = FileFindFirstFile($sPath & '\*.content') $sContent = '' While 1 $sFile = FileFindNextFile($search) If @error Then ExitLoop $sContent &= FileRead($sPath & '\' & $sFile) & @CRLF WEnd FileWrite($sPath & '\' & 'summary.content', $sContent)
файлы слились в один весом 300 мегов, но для открытия его в Экселе нужно что бы он воспринимался как единый XML, а для этого нужно удалить из файла структуры начала и конца XML: [box title=TitleBox]
.
Выделено, то что нужно удалять, а то, что «. » между тегами — это должно остаться.
[/box]
Разумеется Sum каждый раз разной длины и поэтому по количеству символов справа обрезать не получится.
Я так понимаю нужно использовать
StringRegExp и StringRegExpReplace
, но никак не получается с ними разобраться. Может кто поможет?
inververs
AutoIT Гуру
Сообщения 2,135 Репутация 465
Я бы делал три замены вот так:
$data = StringRegExpReplace($data,'\r?\n?','') $data = StringRegExpReplace($data,'','') $data = StringReplace($data,' ','')
$data — это содержимое файла откуда нужно вырезать
Tyr
Новичок
Сообщения 43 Репутация 4
inververs,
$sFile = FileRead('D:\TEST INP.ZIP\ED101\summary.content') $sContent = '' $sContent = StringRegExpReplace($sFile,'','') $sContent = StringRegExpReplace($sContent,'\r?\n?','') $sContent = StringReplace($sContent,' ','') FileWrite('D:\TEST INP.ZIP\TEST\2summary.content', $sContent)
Работает, но очень долго.
Вероятнее лучше делать не 3 замены, а поиск фрагмента между блоками [box title=TitleBox] [/box] и [box title=TitleBox] [/box]
и запись найденного в файл. так хоть 1 поис и 1 проход по файлу.
Garrett
Модератор
Локальный модератор
Сообщения 3,999 Репутация 967
Tyr
Прикрепите пару XML файлов, которые нужно объединить.
Сообщение автоматически объединено: 30 Ноя 2013
Как вариант можно так:
Local $oDoc1 = ObjCreate('MSXML2.DOMDocument') Local $oDoc2 = ObjCreate('MSXML2.DOMDocument') $oDoc1.ValidateOnParse = True $oDoc2.ValidateOnParse = True #Region XML 1 $sDoc_1 = _ '' _ &'' _ &'- ' _ &'
01.01.2014 ' _ &'Новый Год! ' _ &' ' _ &'- ' _ &'
06.02.2014 ' _ &'Рождество Христово! ' _ &' ' _ &' ' #EndRegion XML 1 #Region XML 2 $sDoc_2 = _ '' _ &'' _ &'- ' _ &'
23.02.2014 ' _ &'День защитника отечества! ' _ &' ' _ &'- ' _ &'
09.05.2014 ' _ &'День Победы! ' _ &' ' _ &' ' #EndRegion XML 2 ;~ $oDoc1.Load("doc_1.xml") $oDoc1.LoadXML($sDoc_1) ;~ $oDoc2.Load("doc_2.xml") $oDoc2.LoadXML($sDoc_2) For $oDoc2Node In $oDoc2.documentElement.childNodes $oDoc1.documentElement.appendChild($oDoc2Node) Next ConsoleWrite($oDoc1.xml & @CRLF)
Tyr
Новичок
Сообщения 43 Репутация 4
Приложил 3 коротких файлика(это исходные нужные файлы, до слияния их в один). На самом деле в основном они более длинные, но в этих есть полная структура.
Ранее как писал исключил все лишние, потом нужные слил в один файл, последовательно одна ХML за другой. В конечном результате нужно получить текстовый файл таблицу со всёроавно каким разделителем между значениями т.к. в БД разделитель настроить можно, а вот с XML в чистом виде труднее.
Garrett
Модератор
Локальный модератор
Сообщения 3,999 Репутация 967
Возникла задача объединить XML Файлы в один для последующей обработки
#cs ======================= Union of all XML files #ce ======================= Local $sPath = @ScriptDir & '\xml\' ; путь где лежат ваши xml файлы (файл на выходе будет создан здесь же) Local $sOutputFile = 'all.xml' ; имя файла на выходе Local $oDoc1 = ObjCreate('MSXML2.DOMDocument') Local $oDoc2 = ObjCreate('MSXML2.DOMDocument') $oDoc1.Async = False $oDoc2.Async = False $oDoc1.ValidateOnParse = True $oDoc2.ValidateOnParse = True $oInstruction = $oDoc1.CreateProcessingInstruction('xml', 'version="1.0" encoding="utf-8"') $oDoc1.AppendChild($oInstruction) $oPacketEPD = $oDoc1.CreateElement('PacketEPD'); $oDoc1.AppendChild($oPacketEPD) $oPacketEPD.Text = @CRLF & @TAB $hSearch = FileFindFirstFile($sPath & '*.xml') If $hSearch = -1 Then MsgBox(16, @ScriptName, "XML files not found!") Exit EndIf While 1 $sFile = FileFindNextFile($hSearch) If @error Then ExitLoop $oDoc2.Load($sPath & $sFile) For $oDoc2Node In $oDoc2.documentElement.childNodes $oDoc1.documentElement.appendChild($oDoc2Node) Next WEnd FileClose($hSearch) $oDoc1.Save($sPath & $sOutputFile) ; запись в файл $oDoc1 = 0 $oDoc2 = 0
Developing.ru
Короче, ситуация: есть очень много (несколько тысяч) однотипных .xml файлов со структурой, как в прикрепленном примере. Структура везде и всегда одна и та же.
Нужно их всех слепить в один полноценный файл.xml Но при этом, удалить из всех файлов в процессе сбора (так чтобы в итоговом не было) некоторые теги. Далее файл должен нормально читаться Exel.
При этом сделать нужно при помощи наиболее универсального (читай — легко редактируемого) средства — то есть как вариант на скрипте CMD, WSH/PoSH, и т.п.
ИЛИ — нужно свести некоторые данные (теги) из всех файлов в одну таблицу (любого читаемого простыми средствами Окон формата).
По дурости своей и ностальгии решил замутить все на обычном CMD, но застрял в процессе: как замутить чтение только части файла, откидывая сразу заголовки:
Есть и более простое решение: поместить все в тег
А как удалить по маске содержимое тега вместе с ним на голом CMD — вообще не знаю.
Решил смотреть в сторону разпарсинга кучи этих xml в таблицу на PowerShell, о в котором я страшный нубище)))
Накурил такой вот код:
$h = @<> dir *.xml | Foreach < $obj = try catch foreach($i in $obj) < $h["$($i.Computer)"] += ,$i.ProcessName >$obj = $null > foreach ($c in $h.Keys) < $h[$c] | Group -NoElement | Select-Object @>,@>,Count | Export-CSV -Path D:\testxml.csv -Delimiter "`t" -Encoding UTF8 -NoTypeInformation > $h.Clear()
Ну что-то не покатило — ибо как вариант очень вероятный — я натупил.
Во общем прошу помощи в решении! Ибо задача срочная и очень объемная.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Romeo Сообщения: 3091 Зарегистрирован: 02 мар 2004, 17:25 Откуда: Крым, Севастополь Контактная информация:
Я бы всё-таки не стал это делать на скрипте, так как, судя по размеру и количеству файлов, такой скрипт будет выполняться до конца света. Самым быстрым с точки зрения выполнения конечно же является компилируемая программа, которая просто открывает файлы, как текстовые, ищет по ключевым тегам и прямо кусками, не распаршивая весь остальной контент, вставляет текст в итоговый большой файл. Но тут, конечно же, потребуются знания в программировании.
Entites should not be multiplied beyond necessity @ William Occam
—
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
—
Сообщение «Спасибо» малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой «Reputation» в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Victo Сообщения: 3 Зарегистрирован: 06 окт 2016, 14:32
Ребята выручайте, надо объединить несколько файлов xml в один. Уже весь интернет «перерыл», но так и не нашёл ответа. Нашёл прогу которая сравнивает два файла (winmerge называется) и делает их одинаковыми (возможно я не нашёл как переносить данные с одного файла в другой), но мне надо добавить в один. Подскажите как это сделать.
п.с. я не программист
Romeo Сообщения: 3091 Зарегистрирован: 02 мар 2004, 17:25 Откуда: Крым, Севастополь Контактная информация:
Файлы нужно просто склеить или требуется интеллектуальная обработка данных?
Если просто склеить, то склеивать умеет даже простая консольная команда copy (посмотри синтаксис, использующий плюс).
Если же обычной склейки недостаточно, то нужно уже писать программу, здесь ничего не поделаешь.
Entites should not be multiplied beyond necessity @ William Occam
—
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
—
Сообщение «Спасибо» малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой «Reputation» в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Victo Сообщения: 3 Зарегистрирован: 06 окт 2016, 14:32
В файлах хранится информация от одного сайта. Недавно я сбрасывал систему и не сохранил файлы, так как думал на сервере инфа останется. Оказалось что нет. Мне восстановили файлы и теперь мне надо их скрепить. Восстановленные файлы я открывал на компе, вроде с виду такие же как и должны быть. Я так понимаю надо только скрепить. Попробую тем что ты посоветовал, но я вообще не программёр, даже блокнотом никогда не пользовался. Вообщем попробую — если что отпишусь.
Victo Сообщения: 3 Зарегистрирован: 06 окт 2016, 14:32
Не, я в этом не разберусь. Синтаксис да ещё на английском. Попроще ничё нет? Может какой-то редактор?
Romeo Сообщения: 3091 Зарегистрирован: 02 мар 2004, 17:25 Откуда: Крым, Севастополь Контактная информация:
Да что там разбираться. Если есть файл file1.xml и file2.xml, и нужно их слить и записать результат в файл file_all.xml, то нужно написать следующую команду в командной строке:
copy file1.xml+file2.xml file_all.xml
Если файлов больше, то их можно добавлять в первый параметр через дополнительные плюсы.
Entites should not be multiplied beyond necessity @ William Occam
—
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
—
Сообщение «Спасибо» малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой «Reputation» в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
WinMain Сообщения: 913 Зарегистрирован: 14 янв 2005, 10:30 Откуда: Москва Контактная информация:
Простое склеивание текстовых файлов в один здесь не подойдёт.
Сводный XML-файл должен иметь примерно такую структуру.
[/HTML]Для этого нужно будет написать небольшой скрипт, который будет делать следующее:
— создать выходной XML-файл с заголовочной строкой и пустым корневым тегом.
— найти в указанном каталоге все файлы с расширением .XML, в итоге должен получиться список имён файлов.
— циклом поочерёдно открывать каждый исходный XML-файл и парсером читать данные из его корневого тега.
— добавлять в выходной XML-файл полученные данные в виде дочерних тегов (желательно присваивать каждому тегу уникальное имя).
Такая задачка легко решается на языках типа Java, Python, C#. Программисту средней квалификации на это хватит пары часов.
Но если человек не знаком с программированием, то ему самому это будет не под силу.
Лучше обратиться в раздел «Решите мне задачку» и предложить некоторое вознаграждение.
8 сообщений • Страница 1 из 1
- Системное и прикладное программирование
- ↳ Win API, Shell..
- ↳ C и C++
- ↳ Delphi и Pascal
- ↳ Программирование на Pascal и Delphi (Object Pascal)
- ↳ Все вопросы ООП
- ↳ Компоненты в Delphi
- ↳ Delphi и WinAPI, ActiveX и OLE , COM и DCOM, и т.д
- ↳ Java
- ↳ MS Office и VB(A).
- ↳ Ассемблер
- WEB программирование
- ↳ JScript, VBScript, DHTML.
- ↳ Perl, PHP, ASP .
- Некатегоризированное
- ↳ Вопрошайка
- ↳ SQL
- ↳ Алгоритмы
- ↳ Дизайн и графика
- Администрирование
- ↳ Apache, IIS.
- ↳ Операционные системы
- Работа
- ↳ Вакансии и заказы для программистов
- ↳ Поиск работы и заказов.
- ↳ Решите мне задачку
- ↳ задачи на Паскале и Delphi
- ↳ задачи на C и C++
- ↳ задачи на Basic и Visual Basic (VB)
- Прочее
- ↳ Жалобная книга
- ↳ Флейм.
Слияние XML в XML
The application is running in free mode. It means that your request will be processed in unprivileged manner and will take considerable time. To speed up processing of your files please buy a license.
Попробуйте другие приложения
Aspose.Tasks for .NET
Слияние — это процесс, когда вы загружаете несколько файлов одного формата, преобразуете их и сохраняете в один файл нужного формата. Это похоже на одновременное использование конвертации и сжатия. Когда вам понадобится такая функциональность? : • Если вы хотите объединить файлы MPP в один файл в XML файл для создания презентации или около того. • Когда вы хотите поделиться всей проектной документацией с заинтересованными сторонами сразу в одном файле формата XML. • Когда вам нужен доступ к данным MS Project с любого устройства. Это приложение для слияния с XML в XML является решением, которое вы ищете. Он прост в использовании и быстр. Он работает на любой платформе и на любом устройстве. Для объединения файлов MS Project вам нужен только браузер. Функциональность также доступна для интеграции в ваш продукт. Обратитесь к разделу Документация, чтобы узнать больше об этой опции.
- Объедините XML с XML простым способом.
- Используйте его в своих собственных приложениях и интегрируйте функциональность в свои проекты C # .NET.
- Слияние высокопроизводительных проектов Microsoft с нативными API.
Как объединить XML с XML
- Чтобы добавить файлы, нажмите в любом месте синей области или кнопку «Обзор файлов», чтобы загрузить или перетащить их. Вы также можете добавить документы, введя их URL-адрес в ячейку URL-адреса.
- Нажмите кнопку «Объединить». Ваши проекты MS будут загружены и объединены в формат результата.
- Чтобы сбросить выбор или начать заново, щелкните крестик в правом верхнем углу области перетаскивания.
- Ссылка на скачивание результата будет доступна сразу после этого.
- Чтобы начать заново, нажмите кнопку Вернуться к приложению.
FAQ
- Как объединить XML с XML? Чтобы добавить файлы, нажмите в любом месте синей области или кнопку «Обзор файлов», чтобы загрузить или перетащить файл. Вы также можете добавить документы, введя их URL-адрес в ячейку URL-адреса. Затем нажмите кнопку «Объединить». Скоро вы получите результат.
- Какой максимальный размер файла поддерживается? Максимальный размер составляет 250 Мб
- Сколько времени нужно, чтобы объединить XML с XML? Это приложение работает быстро. Процесс занимает всего несколько секунд.
Слияние XML-файлов онлайн или через C#
Используйте XML Merger для быстрого, четкого и безопасного объединения нескольких XML-файлов в один.
Aspose.Tasks for .NET
Как объединить файлы XML?
Aspose.Tasks for .NET для XML — это мощный и надежный инструмент для объединения файлов онлайн или программно через C#. Объединить несколько XML-файлов в один файл легко с помощью правильных инструментов. Он обеспечивает простой и понятный способ быстрого объединения нескольких файлов в один, обеспечивая при этом сохранение исходного форматирования и структуры файлов. C# API предлагает качественное и быстрое решение для онлайн-объединения файлов любого формата. Процесс прост: выберите файлы XML, которые вы хотите объединить, выберите формат выходного файла, например JIRA , [XER](/tasks /ru/net/merger/xer/), MPX или Microsoft-Project. Нажмите кнопку «Объединить» и дождитесь завершения процесса объединения. После завершения вы можете сохранить объединенный файл на свой компьютер. Aspose.Tasks XML merge C# API прост в использовании и может значительно сэкономить время при работе с несколькими файлами XML. Если вы хотите использовать функции слияния и преобразования в своем продукте или выполнять слияние программно, пожалуйста, загрузите библиотеку C# Aspose.Tasks , изучите нашу документацию и рассмотрим примеры кода C#. Мощный C# API позволяет быстро и качественно объединять файлы.
Онлайн-слияние XML
Проверьте качество слияния XML прямо в браузере! Пожалуйста, загрузите XML-файлы из локальной файловой системы или URL-адреса, выберите нужный формат вывода и запустите пример! Объединение XML-файлов может стать отличным способом консолидации данных и упрощения управления ими. Инструменты слияния Aspose.Tasks — отличный способ сэкономить время и упростить управление несколькими файлами XML. Кроме того, слияние XML упрощает перенос данных из одного проекта в другой, устраняя необходимость ручного ввода данных и помогая командам оставаться организованными. Итак, быстро объедините файлы XML и сохраните результат в JIRA, MPX , [MS-Project](/tasks/>net/merger/ms-project/), Oracle Primavera, PDF и другие онлайн-форматы. Проверьте качество процесса в своем браузере, загрузите файлы из локальной файловой системы или URL-адреса, выберите нужный формат вывода и запустите пример. Это быстро, просто, безопасно и совершенно бесплатно! С помощью онлайн-инструмента объединения XML пользователи могут быстро объединить несколько файлов XML в один и сохранить результат в файле другого формата. Это упрощает и ускоряет перенос данных из одного проекта в другой, устраняя необходимость ручного ввода данных. Кроме того, формат файла XML помогает командам оставаться организованными и работать на одной странице, упрощая совместную работу и повышая их эффективность. Проверьте качество процесса прямо в браузере, загрузите файлы из локальной файловой системы или URL-адреса, выберите нужный формат вывода и запустите пример. Это быстро, просто, безопасно и совершенно бесплатно!
document1.Save("merged.mpp", SaveFileFormat.Mpp);
Шаги по слиянию XML в C#
Aspose.Tasks для .NET API предоставляет класс Renderer для рендеринга и слияния нескольких документов проекта, таких как файлы MPP, XML и Task. Используя класс Renderer, разработчики могут легко объединить несколько файлов проекта в один выходной файл. Класс Renderer предоставляет реализации TaskRenderer, XmlRenderer и MPPRenderer, которые используются для визуализации задач, документов XML и Microsoft-Project соответственно. Кроме того, разработчики могут использовать параметры, доступные в классе Renderer, для точной настройки выходных файлов, построения сложных отчетов и визуально привлекательных презентаций. Более того, разработчики могут даже автоматизировать процесс слияния, чтобы сэкономить время и силы. Если вы хотите программно объединить документы проекта, взгляните на предоставленный пример. Вы можете быстро и легко объединить файлы проекта с помощью нескольких строк кода.
Используя Aspose.Tasks для .NET API, вы можете легко конвертировать XML-файлы в Jira и другие форматы с помощью нескольких строк кода C#. В следующем примере показано, как это сделать:
- Загрузите файл XML с классом Project
- Вызовите метод Project.Save
- Передайте путь к выходному файлу и SaveFileFormat.MPP в качестве параметров
- Если вы хотите объединить XML с MPP, создайте устройство MPP. Используйте конструктор MPPDevice() для инициализации нового экземпляра класса MPPDevice.
- Вызовите метод Render() , чтобы объединить все файлы XML в документы PDF.
- Скопируйте код C# для слияния файлов Tasks и используйте его в своем проекте.
Часто задаваемые вопросы о формате XML
1. Чем полезно это слияние XML?
XML Merger — это практичный, мощный и быстрый инструмент для объединения нескольких файлов XML. Вы можете быстро и легко объединить XML документов в один и без проблем сохранить результат в форматах MPP, MPT, MPX и XML!
2. Как я могу объединить XML?
Вы можете объединить XML онлайн или программно. Чтобы объединить документы XML онлайн, просто загрузите файлы со своего компьютера или URL-адреса, выберите нужный выходной формат из списка и нажмите кнопку «Выполнить». Вы получите результат в кратчайшие сроки. Кроме того, вы можете скопировать код C# и использовать его в своем приложении для слияния документов.
3. Могу ли я объединить XML в Linux, Mac OS, iOS или Android?
Вы можете использовать этот бесплатный онлайн XML Merger с мобильного устройства, планшета или компьютера. Интерфейс Merger интуитивно понятен и удобен. Наш инструмент совместим со всеми основными операционными системами и соответствующими браузерами, включая Windows, Mac OS, Linux, Android и iOS. Для запуска этого инструмента не требуется установка дополнительного программного обеспечения.
Что такое формат файла XML
XML (расширяемый язык разметки) — это язык разметки, который используется для кодирования документов в формате, удобном как для человека, так и для машинного чтения. Обычно он используется для хранения и передачи данных между приложениями и системами. Документы XML состоят из элементов, которые содержат данные и могут также содержать другие элементы. Элементы определяются тегами, которые представляют собой метки, описывающие данные или структуру данных. XML — это популярный формат для обмена данными в Интернете, который используется в самых разных приложениях.
Как установить Aspose.Tasks для библиотеки .NET
Вы можете использовать несколько способов установки библиотеки Aspose.Tasks для .NET в вашей системе:
- Установите пакет NuGet с помощью графического интерфейса диспетчера пакетов NuGet.
- Установите пакет NuGet с помощью консоли диспетчера пакетов. Вы можете использовать следующую команду PM> Install-Package Aspose.Html .
- Установите Aspose.HTML для .NET через MSI.
Aspose.Tasks для локального API .NET предоставляет комплексное решение для управления данными, связанными с проектом. Он позволяет работать с проектами, формулами, календарями, исключениями календаря, задачами, ссылками задач, базовыми планами задач, ресурсами проекта, назначениями ресурсов, валютами, обработкой исключений, службами отчетности и анализом рисков проекта (Моделирование Монте-Карло) с полным контролем и точность. Кроме того, этот API разработан так, чтобы быть удобным для пользователя и помочь вам получить больше от данных вашего проекта с минимальными усилиями.
Aspose.Tasks для .NET поддерживает разработку любого типа 32-разрядных или 64-разрядных . NET, например ASP.NET, WCF, WinForms, WPF и т. д. Также можно использовать Aspose.Tasks для .NET через COM Interop из ASP, Perl, PHP и Python, а также создавать приложения с помощью Mono. Дополнительные сведения об установке библиотеки C# и системных требованиях см. в Документации Aspose.Tasks.