Имя: Пароль:
1C
 
Подскажите идею - сравнить 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

так вот - все счета различны
в них разный набор реквизитов и разные значения
но они похожи
при одном значении конкретного реквизита они имеют одну структуру
при другом - другую
при этом значения одних реквизитов могут быть различны (даты, номера)
других - постоянны
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс