![]() |
![]() |
![]() |
|
Подскажите идею - сравнить XML по структуре и значениям | ☑ | ||
---|---|---|---|---|
0
RomaH
naïve
09.12.16
✎
09:08
|
Суть - есть "правильный" файл (много) со счетами
и есть новый файл надо сравнить его с "правильным" и выявить счета которые не похожи на правильные. http://dl.dropbox.com/u/70454663/2016-12-09_08h55_08.png |
|||
1
Кирпич
09.12.16
✎
09:10
|
А в чем проблема?
|
|||
2
RomaH
naïve
09.12.16
✎
09:12
|
при анализе "правильного" файла
начинаем: help_type = "7" ищем все счета с таким значением затем help_cond = "1" ищем все счета в найденных ранее потом n_pp="1551" - таких счетов 1 (уникальный) в коллекции правило для проверки становится: "искать свойство "n_pp", но не сравнивать значение аналогично для других похожих реквизитов типа дата/номер - когда одинаковых значений на коллекцию будет <1% |
|||
3
Лефмихалыч
09.12.16
✎
09:12
|
||||
4
RomaH
naïve
09.12.16
✎
09:12
|
(1) как это вообще сделать - на каких метаданных, на каком алгоритме
|
|||
5
1dvd
09.12.16
✎
09:13
|
Писал брамотку по сравнению хмл. Но, правда под клюшки
|
|||
6
Лефмихалыч
09.12.16
✎
09:13
|
||||
7
RomaH
naïve
09.12.16
✎
09:14
|
(3) и чего?
например имея правильный файл типа (0) мне надо сказать, что не правильным счетом будет с direction="2" |
|||
8
FIXXXL
09.12.16
✎
09:14
|
(0) в чем разница и для чего нужен результат? может просто сравнить файлы?
|
|||
9
Лефмихалыч
09.12.16
✎
09:16
|
(7) сделай xsd-схему и валидируй файлы по ней. Это и есть ровно то, что тебе надо - всё уже придумано.
|
|||
10
RomaH
naïve
09.12.16
✎
09:16
|
(3) тут можно/нужно абстрагироваться от XML
по сути это дерево с произвольным набором реквизитов в строках |
|||
11
RomaH
naïve
09.12.16
✎
09:17
|
(9) суть - что схем этих будет больше 500, и они каждый месяц меняться будут
|
|||
12
RomaH
naïve
09.12.16
✎
09:17
|
<directions >
<direction xkey="d765e250-afd5-11e6-b2bc-5404a668980b" direction="1" number="YT11000047603" date_1="2016-10-17" ogrn_lpu="1047600412914" kpp_lpu="760401001" direction_type="1" mkb="E11.8"> <profile profile="0122"/> </direction> <direction xkey="8102089a-7599-11e6-b264-f46d04e23350" direction="1" number="YT11000045173" date_1="2016-09-08" ogrn_lpu="1047600412914" kpp_lpu="760401001" direction_type="1" mkb="E10.7"> <profile profile="0122" /> </direction> что даст сравнение этих двух веток? |
|||
13
RomaH
naïve
09.12.16
✎
09:18
|
<directions >
<direction xkey="d765e250-afd5-11e6-b2bc-5404a668980b" direction="1" number="YT11000047603" date_1="2016-10-17" ogrn_lpu="1047600412914" kpp_lpu="760401001" direction_type="1" mkb="E11.8"> <profile profile="0122"/> </direction> <direction xkey="8102089a-7599-11e6-b264-f46d04e23350" direction="2" number="YT11000045173" date_1="2016-09-08" ogrn_lpu="1047600412914" kpp_lpu="760401001" direction_type="1" mkb="E10.7"> <profile profile="0122" /> </direction> а этих? |
|||
14
RomaH
naïve
09.12.16
✎
09:18
|
(12) - они "одинаковые"
(13) - нет |
|||
15
Лефмихалыч
09.12.16
✎
09:19
|
(10) ну, вот, если абстрагироваться, то тебе нужен свой велосипед с квадратными колесами. А если не абстрагироваться, то можно использовать овер 9000 уже готовых инструментов, отлаженных и протестированных миллионами людей по всему земному шару, каковые инструменты к тому же базируются на технологиях, ставших де-факто стандартами в отрасли
|
|||
16
RomaH
naïve
09.12.16
✎
09:21
|
(15) а..., ну тогда все ясно - можно закрывать тему
ты открыл мне глаза |
|||
17
1dvd
09.12.16
✎
09:22
|
||||
18
RomaH
naïve
09.12.16
✎
09:22
|
(15) надо записать .... универсальный ответ на все вопросы
|
|||
19
Лефмихалыч
09.12.16
✎
09:24
|
(18) продолжай абстрагировать
|
|||
20
RomaH
naïve
09.12.16
✎
09:26
|
(17)
еще раз есть правильный файл в нем порядка 2000 "счетов" personal_account так вот - все счета различны в них разный набор реквизитов и разные значения но они похожи при одном значении конкретного реквизита они имеют одну структуру при другом - другую при этом значения одних реквизитов могут быть различны (даты, номера) других - постоянны |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |