Каталог расширений

Популярные теги

3gp       avi       fb2       jpg       mp3       pdf      

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


Как Объединить Два Файла Xml

У меня есть два xml файла, которые нужно объединить в один xml. Вот пример:

orginal.xml файл:

<employees>
<employee>
<name> Name1 </name>
<email> email1 <email>
</employee>
<employee>
<name> Name2 </name>
<email> email2 <email>
</employee>
</employees>

файл update.xml:

<employees>
<employee>
<name> Name2 </name>
<email> email_New <email>
</employee>
<employee>
<name> Name3 </name>
<email> email3 <email>
</employee>
</employees>

они должны быть объединены с файлом xml следующим образом:

<employees>
<employee>
<name> Name1 </name>
<email> email1 <email>
</employee>
<employee>
<name> Name2 </name>
<email> email_New <email>
</employee>
<employee>
<name> Name3 </name>
<email> email3 <email>
</employee>
</employees>

На самом деле, я хотел бы использовать update.xml для обновления orginal.xml:


    Новый сотрудник в файле update.xml должен быть добавлен в original.xml

    измененная информация о сотруднике в файле update.xml должна быть перезаписана соответствующим сотрудником node.


Я знаю немного XSLT, но моих знаний недостаточно, чтобы выяснить правильный XSLT для слияния.

Объединить Два Файла Xml

Сделав несколько корректировок, чтобы ваш входной и ожидаемый результаты были хорошо сформированы, я предлагаю следующее решение XSLT 2.0. Корректировки:


    Включение каждого входного документа в отдельные узлы.
    Включение ожидаемого выходного документа в один node.

Итак, чтобы преобразовать следующий документ....

<organization>
<info>
<organization_id>123</organization_id>
<total_patients>5</total_patients>
</info>
<patients>
<patient>
<guid>1111</guid>
</patient>
<patient>
<guid>2222</guid>
</patient>
</patients>
</organization>

Включите следующий документ совместного ввода...

<organization>
<info>
<organization_id>456</organization_id>
<total_patients>10</total_patients>
</info>
<patients>
<patient>
<guid>3333</guid>
</patient>
<patient>
<guid>4444</guid>
</patient>
</patients>
</organization>

..., на который будет ссылаться, при вызове движка XSLT в качестве параметра с именем "org2", применяя следующее преобразование XSLT2...

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fn="http://www.w3.org/2005/xpath-functions"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
version="2.0"
exclude-result-prefixes="xsl xs fn">

<xsl:output indent="yes" encoding="UTF-8" />
<xsl:param name="org2" />
<xsl:variable name="org2-doc" select="document($org2)" />

<xsl:template match="/">
<output>
<info>
<total_patients>
<xsl:number value="organization/info/total_patients +
$org2-doc/organization/info/total_patients" />
</total_patients>
</info>
<organizations>
<xsl:apply-templates />
<xsl:apply-templates select="$org2-doc/*" />
</organizations>
</output>
</xsl:template>

<xsl:template match="organization">
<organization>
<organization_id>
<xsl:number value="info/organization_id" />
</organization_id>
<xsl:copy-of select="patients" />
</organization>
</xsl:template>

</xsl:stylesheet>

... дает желаемый результат....

<?xml version="1.0" encoding="UTF-8"?>
<output>
<info>
<total_patients>15</total_patients>
</info>
<organizations>
<organization>
<organization_id>123</organization_id>
<patients>
<patient>
<guid>1111</guid>
</patient>
<patient>
<guid>2222</guid>
</patient>
</patients>
</organization>
<organization>
<organization_id>456</organization_id>
<patients>
<patient>
<guid>3333</guid>
</patient>
<patient>
<guid>4444</guid>
</patient>
</patients>
</organization>
</organizations>
</output>

Как Объединить Два Файла Xml В Один, Используя Nokogiri?

У меня есть два XML файла и вы хотите их объединить, но теги, которые уже там, не должны меняться:

XML 1:

<?xml version="1.0"?>
<formX xmlns="sdu:x">
<identify>
<mat>8</mat>
</identify>
</formX>

XML 2:

<?xml version="1.0"?>
<formX xmlns="sdu:x">
<identify>
<mat>9999</mat>
<name>John Smith</name>
</identify>
</formX>

Я хочу, чтобы результат был таким:

<?xml version="1.0"?>
<formX xmlns="sdu:x">
<identify>
<mat>8</mat>
<name>John Smith</name>
</identify>
</formX>

Предыдущие теги должны иметь одинаковые значения, но с добавлением новых.
Возможно ли это с помощью Nokogiri? Как?

Сначала я пробовал без Nokogiri, используя:

xml1 = Hash.from_xml('<?xml version="1.0"?>
<formX xmlns="sdu:x">
<identify>
<mat>8</mat>
</identify>
</formX>')

Но когда я конвертирую обратно в xml (xml1.to_xml), я получаю неправильный формат:

"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<hash>\n <formX>\n <xmlns>sdu:x</xmlns>\n <identify>\n <mat>8</mat>\n </identify>\n </formX>\n</hash>\n"

Используя Nokogiri, я придумал это решение, но на самом деле он настолько уродлив и имеет ошибку. Если xml2 не имеет элемента, он сработает:

require 'nokogiri' 

s = "<formAposentadoria xmlns=\"spu:aposentadoria\"><identificacao><matricula>8</matricula></identificacao></formAposentadoria>"
xml1 = Nokogiri::XML.parse s

s2 = "<formAposentadoria xmlns=\"spu:aposentadoria\"><identificacao><matricula>9</matricula><nome>John</nome></identificacao></formAposentadoria>"
xml2 = Nokogiri::XML.parse s2

def node_list elem, &proc
return [] unless elem.class == Nokogiri::XML::Element
str = proc.call(elem)
[str] + elem.children.inject([]){|a,c| a+node_list(c,&proc)}.map{|e| "#{str}/#{e}"}
end

node_list(xml1.root){|e| e.name}.each do |x|
caminho = '//xmlns:' + x.gsub('/', '/xmlns:')
puts caminho
if xml2.at_xpath( caminho ).children.children.count == 0
xml2.at_xpath( caminho ).content = xml1.at_xpath( caminho ).content
end
end

puts xml2.to_xml

Каков самый быстрый способ объединить два xml файла в один - c#

Если у меня есть две строки xml1 и xml2, которые оба представляют xml в том же формате. Каков самый быстрый способ объединить их? Формат не важен, но я просто хочу знать, как я могу избавиться или?

xml1:

<?xml version="1.0" encoding="utf-8"?> <AllNodes> <NodeA> <NodeB>test1</NodeB> <NodeB>test2</NodeB> </NodeA> </AllNodes> 

xm2:

<?xml version="1.0" encoding="utf-8"?> <AllNodes> <NodeA> <NodeB>test6</NodeB> <NodeB>test7</NodeB> </NodeA> <NodeA> <NodeB>test99</NodeB> <NodeB>test23</NodeB> </NodeA> </AllNodes> 

и что-то вроде этого:

<?xml version="1.0" encoding="utf-8"?> <AllNodes> <NodeA> <NodeB>test1</NodeB> <NodeB>test2</NodeB> </NodeA> <NodeA> <NodeB>test6</NodeB> <NodeB>test7</NodeB> </NodeA> <NodeA> <NodeB>test99</NodeB> <NodeB>test23</NodeB> </NodeA> </AllNodes> 
источник поделиться

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

У меня есть два xml файла, которые нужно объединить в один xml. Вот пример:

orginal.xml файл:

<employees> <employee> <name> Name1 </name> <email> email1 <email> </employee> <employee> <name> Name2 </name> <email> email2 <email> </employee> </employees> 

файл update.xml:

<employees> <employee> <name> Name2 </name> <email> email_New <email> </employee> <employee> <name> Name3 </name> <email> email3 <email> </employee> </employees> 

они должны быть объединены с файлом xml следующим образом:

<employees> <employee> <name> Name1 </name> <email> email1 <email> </employee> <employee> <name> Name2 </name> <email> email_New <email> </employee> <employee> <name> Name3 </name> <email> email3 <email> </employee> </employees> 

На самом деле, я хотел бы использовать update.xml для обновления orginal.xml:

  • Новый сотрудник в файле update.xml должен быть добавлен в original.xml

  • измененная информация о сотруднике в файле update.xml должна быть перезаписана соответствующим сотрудником node.

Я знаю немного XSLT, но моих знаний недостаточно, чтобы выяснить правильный XSLT для слияния.

Как Объединить Много Xml И Преобразовать Их В Windows

Для объединения файлов XML, чтобы вы могли обрабатывать их как один файл, одним из вариантов было бы написать пакетный скрипт cmd.exe, который создает файл корневого XML с ссылками на внешние сущности для всех ваших XML файлов.

Возможно, что-то вроде этого (при условии, что имена файлов XML без расширения допускаются именами сущностей):

@echo off
del root.xml 2> nul
(
echo ^<!DOCTYPE root [
for %%f in (*.xml) do (echo ^<!ENTITY %%~nf SYSTEM "%%f"^>)
echo ]^>
echo ^<root^>
for %%f in (*.xml) do (echo ^&%%~nf;)
echo ^</root^>
) > root.tmp
move root.tmp root.xml > nul

В качестве альтернативы вы можете просто вывести имена файлов с помощью некоторых тэгов XML и получить доступ к файлам с помощью функции document() из вашего XSLT.

Для запуска преобразования XSLT из командной строки вы можете использовать, например, служебную программу командной строки msxsl.exe, которая является интерфейсом для библиотеки MSXML, возможно, уже установленной в вашей системе.

msxsl root.xml stylesheet.xsl

Объединение двух файлов XML в один файл XML с использованием Java

Переполнение стека
  1. Около
  2. Товары
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
  4. Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
.

java - Как я могу объединить / объединить два файла XML в один и решить, нужно ли добавить / удалить элемент или атрибут

Переполнение стека
  1. Около
  2. Товары
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
.

merge - Как объединить данные из двух файлов XML в одну структуру?

Переполнение стека
  1. Около
  2. Товары
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд
.

Как объединить два XML в Java

Переполнение стека
  1. Около
  2. Товары
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
.

jpa - Как объединить несколько файлов jar с файлами peristence.xml в один проект jsf

Переполнение стека
  1. Около
  2. Товары
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
.

java - Как превратить два файла журнала .xml в один

Переполнение стека
  1. Около
  2. Товары
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
  4. Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
.

Смотрите также