Answer the question
In order to leave comments, you need to log in
How to convert xml source structure to xml structure sample?
There are two xml structures: source(I) and sample(O).
Required:
1. From (I) remove the nodes that are missing in (O).
2. From (O) add nodes that are missing in (I). Fill in the added nodes with values from (O).
Example
Source
<CatalogObject.Организации>
<Поле1>исходник. поле1</Поле1>
<Поле2>исходник. поле2</Поле2>
<Поле3/>
<Таблица1>
<Строка>
<Колонка1>исходник. таблица 1. строка1. колонка1</Колонка1>
<Колонка2>исходник. таблица 1. строка1. колонка2</Колонка2>
<Колонка3>исходник. таблица 1. строка1. колонка3</Колонка3>
<Колонка4>исходник. таблица 1. строка1. колонка4</Колонка4>
</Строка>
<Строка>
<Колонка1>исходник. таблица 1. строка2. колонка1</Колонка1>
<Колонка2>исходник. таблица 1. строка2. колонка2</Колонка2>
<Колонка3>исходник. таблица 1. строка2. колонка3</Колонка3>
<Колонка4>исходник. таблица 1. строка2. колонка4</Колонка4>
</Строка>
</Таблица1>
<Таблица3>
<Строка>
<Колонка1>исходник. таблица 3. колонка1</Колонка1>
<Колонка2>исходник. таблица 3. колонка2</Колонка2>
<Колонка3>исходник. таблица 3. колонка3</Колонка3>
</Строка>
</Таблица3>
</CatalogObject.Организации>
<CatalogObject.Организации>
<Поле1>образец поле1</Поле1>
<Поле2>образец поле2</Поле2>
<Поле4/>
<Поле5>образец поле5</Поле5>
<Таблица1>
<Строка>
<Колонка1>образец. таблица1. колонка1</Колонка1>
<Колонка2>образец. таблица1. колонка2</Колонка2>
<Колонка3>образец. таблица1. колонка3</Колонка3>
<Колонка5>образец. таблица1. колонка5</Колонка5>
</Строка>
</Таблица1>
<Таблица2>
<Строка>
<Колонка5>образец. таблица2. колонка5</Колонка5>
<Колонка6>образец. таблица2. колонка6</Колонка6>
<Колонка7>образец. таблица2. колонка7</Колонка7>
</Строка>
</Таблица2>
</CatalogObject.Организации>
<CatalogObject.Организации>
<Поле1>исходник. поле1</Поле1>
<Поле2>исходник. поле2</Поле2>
<Поле4/>
<Поле5>образец поле5</Поле5>
<Таблица1>
<Строка>
<Колонка1>исходник. таблица 1. строка1. колонка1</Колонка1>
<Колонка2>исходник. таблица 1. строка1. колонка2</Колонка2>
<Колонка3>исходник. таблица 1. строка1. колонка3</Колонка3>
<Колонка5>образец. таблица1. колонка5</Колонка5>
</Строка>
<Строка>
<Колонка1>исходник. таблица 1. строка2. колонка1</Колонка1>
<Колонка2>исходник. таблица 1. строка2. колонка2</Колонка2>
<Колонка3>исходник. таблица 1. строка2. колонка3</Колонка3>
<Колонка5>образец. таблица1. колонка5</Колонка5>
</Строка>
</Таблица1>
<Таблица2>
<Строка>
<Колонка5>образец. таблица2. колонка5</Колонка5>
<Колонка6>образец. таблица2. колонка6</Колонка6>
<Колонка7>образец. таблица2. колонка7</Колонка7>
</Строка>
</Таблица2>
</CatalogObject.Организации>
Answer the question
In order to leave comments, you need to log in
Did a similar task, only searching for extra/missing nodes and values
Used C# -> System.Xml.Linq (well, or whatever you want
)
for example:
CatalogObject.Organizations>Field1=sample field1
CatalogObject.Organizations>Table1>Row>Column1=source. table 1. row1. column1
1.1. We add them to Dictionary(string, XElement) to simplify subsequent access to them
2. traverse the entire source tree and similarly form a path for each node
3. potentially all paths are unique. looking for extra/missing paths.
4. delete the extra ones from the source, add the missing ones (take from the Dictionary)
in my case, it was necessary to check xml files for a complete match, so in the path I also used attributes (+ their values) and the values of the elements themselves
looked something like this
root> [email protected][email protected]=value=value of the node
or
root> node2> [email protected][email protected]=value>node4=valueNode
if the values of the elements may not match,
then everything rests on the formation of a unique path to each node
, you can add indexing in the path for matching elements
CatalogObject.Organizations>Table[10]>String[2]
PS It is more pleasant for me to write a possible bike than to look for specific ready-made solutions :)
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question