:: Visual Foxpro, Foxpro for DOS
Конвертация файлов из xml в dbf
Natka
Автор

Сообщений: 8
Дата регистрации: 07.07.2017
Уважаемые коллеги, помогите объединить несколько xml файлов одинаковой структуры в один dbf файл.
Никогда этого не делала, подскажите с чего начать. Xml имеют многоуровневую структуру.
Ratings: 0 negative/0 positive
Re: Конвертация файлов из xml в dbf
ssa

Сообщений: 13008
Откуда: Москва
Дата регистрации: 23.03.2005
Сегодня, наверное, день вопросов про сферических коней...
Вы под словом "конвертация" что понимаете? И как это соотносится с "объединить несколько xml файлов"? Вам просто текст запихать в табличку с одним полем? Или таки вам важны данные из этих файликов? И обо всем этом, и не только, мы должны сами догадаться?


------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: Конвертация файлов из xml в dbf
Ydin

Сообщений: 7648
Откуда: Киев
Дата регистрации: 16.12.2005
Сначала сделать 2 dbf-файла (w1,w2)
Select w1
append from w2
Ratings: 0 negative/0 positive
Re: Конвертация файлов из xml в dbf
Natka
Автор

Сообщений: 8
Дата регистрации: 07.07.2017
Нет, мне важны данные по полям, для дальнейшей работы
Ratings: 0 negative/0 positive
Re: Конвертация файлов из xml в dbf
Natka
Автор

Сообщений: 8
Дата регистрации: 07.07.2017
У меня куча xml файлов из них мне нужно получить один dbf
Ratings: 0 negative/0 positive
Re: Конвертация файлов из xml в dbf
Simple777

Сообщений: 33855
Дата регистрации: 05.11.2006
Даже кучи бывают разные, не говоря уже о составляющих самой кучи.

Нужны как минимум образцы файлов.
Ratings: 0 negative/0 positive
Re: Конвертация файлов из xml в dbf
Natka
Автор

Сообщений: 8
Дата регистрации: 07.07.2017
<?xml version="1.0" encoding="windows-1251" ?>
- <Файл ИдФайл="VO_SALDORAS_1300_011000_20170516_142830_52110" ВерсФорм="4.01" ТипИнф="ФНС_СальдоРасч_Испр" ВерсПрог="04.05.2017v1" КолДок="1" xsi:noNamespaceSchemaLocation="VO_SALDORAS_2_114_15_04_01_01.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <Документ ИдДок="30586" ДатаДок="16.05.2017">
- <СведПлатСВ РегНомСтрах="011018000948">
- <СведФЛ ИННФЛ="131900280509">
<ФИО Фамилия="ффффффффф" Имя="фффффффф" Отчество="ффффффффф" />
</СведФЛ>
<АдрМН КодРегион="13" />
</СведПлатСВ>
<Сальдо2017 КБК="39210202010061000160" Сальдо2017В="14750.00" Сальдо2017П="0.00" Сальдо2017Ш="0.00" НедВзыск="0.00" СуммаПлат="14750.00" Задолж="0.00" />
<Сальдо2017 КБК="39210202010062100160" Сальдо2017В="0.00" Сальдо2017П="-1093.43" Сальдо2017Ш="0.00" НедВзыск="1093.43" СуммаПлат="0.00" Задолж="0.00" />
<Сальдо2017 КБК="39210202020062100160" Сальдо2017В="0.00" Сальдо2017П="0.00" Сальдо2017Ш="0.00" НедВзыск="0.00" СуммаПлат="0.00" Задолж="0.00" />
<Сальдо2017 КБК="39210202031062100160" Сальдо2017В="0.00" Сальдо2017П="0.00" Сальдо2017Ш="0.00" НедВзыск="0.00" СуммаПлат="0.00" Задолж="0.00" />
<Сальдо2017 КБК="39210202032062100160" Сальдо2017В="0.00" Сальдо2017П="0.00" Сальдо2017Ш="0.00" НедВзыск="0.00" СуммаПлат="0.00" Задолж="0.00" />
<Сальдо2017 КБК="39210202080062100160" Сальдо2017В="0.00" Сальдо2017П="0.00" Сальдо2017Ш="0.00" НедВзыск="0.00" СуммаПлат="0.00" Задолж="0.00" />
<Сальдо2017 КБК="39210202100062100160" Сальдо2017В="0.00" Сальдо2017П="0.00" Сальдо2017Ш="0.00" НедВзыск="0.00" СуммаПлат="0.00" Задолж="0.00" />
<Сальдо2017 КБК="39210202101081011160" Сальдо2017В="0.00" Сальдо2017П="0.00" Сальдо2017Ш="0.00" НедВзыск="0.00" СуммаПлат="0.00" Задолж="0.00" />
<Сальдо2017 КБК="39210202101082011160" Сальдо2017В="0.00" Сальдо2017П="-219.52" Сальдо2017Ш="0.00" НедВзыск="219.52" СуммаПлат="0.00" Задолж="0.00" />
<Сальдо2017 КБК="39210202101082012160" Сальдо2017В="0.00" Сальдо2017П="0.00" Сальдо2017Ш="0.00" НедВзыск="0.00" СуммаПлат="0.00" Задолж="0.00" />
<Сальдо2017 КБК="39210202110062100160" Сальдо2017В="0.00" Сальдо2017П="0.00" Сальдо2017Ш="0.00" НедВзыск="0.00" СуммаПлат="0.00" Задолж="0.00" />
<Сальдо2017 КБК="39210202120062100160" Сальдо2017В="0.00" Сальдо2017П="0.00" Сальдо2017Ш="0.00" НедВзыск="0.00" СуммаПлат="0.00" Задолж="0.00" />
<Сальдо2017 КБК="39210202131061000160" Сальдо2017В="0.00" Сальдо2017П="0.00" Сальдо2017Ш="0.00" НедВзыск="0.00" СуммаПлат="0.00" Задолж="0.00" />
<Сальдо2017 КБК="39210202131062100160" Сальдо2017В="0.00" Сальдо2017П="0.00" Сальдо2017Ш="0.00" НедВзыск="0.00" СуммаПлат="0.00" Задолж="0.00" />
<Сальдо2017 КБК="39210202132061000160" Сальдо2017В="0.00" Сальдо2017П="0.00" Сальдо2017Ш="0.00" НедВзыск="0.00" СуммаПлат="0.00" Задолж="0.00" />
<Сальдо2017 КБК="39210202132062100160" Сальдо2017В="0.00" Сальдо2017П="0.00" Сальдо2017Ш="0.00" НедВзыск="0.00" СуммаПлат="0.00" Задолж="0.00" />
<Сальдо2017 КБК="39210202140062100160" Сальдо2017В="0.00" Сальдо2017П="0.00" Сальдо2017Ш="0.00" НедВзыск="0.00" СуммаПлат="0.00" Задолж="0.00" />
<Сальдо2017 КБК="39210202150062100160" Сальдо2017В="0.00" Сальдо2017П="0.00" Сальдо2017Ш="0.00" НедВзыск="0.00" СуммаПлат="0.00" Задолж="0.00" />
<Сальдо2017 КБК="39210910010062000160" Сальдо2017В="0.00" Сальдо2017П="0.00" Сальдо2017Ш="0.00" НедВзыск="0.00" СуммаПлат="0.00" Задолж="0.00" />
<Сальдо2017 КБК="39210910020062000160" Сальдо2017В="0.00" Сальдо2017П="0.00" Сальдо2017Ш="0.00" НедВзыск="0.00" СуммаПлат="0.00" Задолж="0.00" />
</Документ>
</Файл>
Ratings: 0 negative/0 positive
Re: Конвертация файлов из xml в dbf
Simple777

Сообщений: 33855
Дата регистрации: 05.11.2006
По умолчанию считается, что речь идет о VFP 9 версии со всеми сервис-паками и хот-фиксами. Речь идет о такой версии VFP?
Ratings: 0 negative/0 positive
Re: Конвертация файлов из xml в dbf
Natka
Автор

Сообщений: 8
Дата регистрации: 07.07.2017
Нет у меня VFP 8.0 SP1
Ratings: 0 negative/0 positive
Re: Конвертация файлов из xml в dbf
LUCIAN

Сообщений: 343
Откуда: Лида Беларусь
Дата регистрации: 25.03.2008
Cегодня корректировал программу в связи с переходом р/с по системе IBAN. Поэтому можете сделать
что-то похожее для своего случая
*-КОПИРОВАНИЕ БАНКОВСКОЙ ВЫПИСКИ НА СЕРВЕР ИЗ БЕЛАРУСБАНК
SET CENTURY ON
set date british
set decimal to 2
SELECT 0
CREATE CURSOR COP (OP C(30))
INSERT INTO COP VALUES ('DOCN')
INSERT INTO COP VALUES ('MFOKORR')
INSERT INTO COP VALUES ('ACCKORR')
INSERT INTO COP VALUES ('NAMEKORR')
INSERT INTO COP VALUES ('UNPKORR')
INSERT INTO COP VALUES ('SUMOPER')
INSERT INTO COP VALUES ('DETPAY')
INSERT INTO COP VALUES ('RATEINFO')
INSERT INTO COP VALUES ('VO')
SELECT 0
CREATE CURSOR CWYP (DOCN C(10),MFOKORR C(16),ACCKOR C(34),NAMEKORR C(60),UNPKORR C(9),SUMOPER C(60),DETPAY C(252),RATEINFO C(40),VO C(3))
X=FOPEN("C:\TEXTFILE\ASBV.OUT",0)
*ПОИСК <OPERINFO>
DO WHILE .T.
ZAP=FGETS(X)
IF LIKE('*<OPERINFO>',ZAP)
EXIT
ENDIF
IF LIKE('*<ACCOUNT>*',ZAP)
ACCOUNT=CHRTRAN(STRTRAN(LTRIM(ZAP),'ACCOUNT',''),'<>/','')
ENDIF
IF LIKE('*<PERIOD>*',ZAP)
PERIOD=CHRTRAN(STRTRAN(LTRIM(ZAP),'PERIOD',''),'<>/','')
DATW=ctod(STRTRAN(PERIOD,'за ',''))
ENDIF
ENDDO
*ПОИСК <OPER>
DO WHILE .T.
ZAP=FGETS(X)
IF LIKE('*</OPERINFO>',ZAP)
=FCLOSE(X)
EXIT
ENDIF
IF LIKE('*<OPER>',ZAP)
SELECT COP
GO TOP
SCAN
DO WHILE NOT LIKE('*<'+RTRIM(COP.OP)+'*',ZAP)
ZAP=FGETS(X)
ENDDO
ZUP=CHRTRAN(STRTRAN(LTRIM(ZAP),RTRIM(COP.OP),''),[<>/'],'')
WYR=RTRIM(COP.OP)+[=']+ZUP+[']
&WYR
ENDSCAN
INSERT INTO CWYP FROM MEMVAR
DO WHILE NOT LIKE('*</OPER>',ZAP)
ZAP=FGETS(X)
LOOP
ENDDO
ENDIF
ENDDO
Ratings: 0 negative/0 positive
Re: Конвертация файлов из xml в dbf
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
И в какой именно структуры dbf нужно это помещать нам надо самим придумать - равно то и какие данные брать из xml файла, а какие там попросту не нужны...

В общем xml обрабатывается классом XMLAdapter - примеров его использования на форуме хватает (поиск по этому волшебному слову). Да, кое что не пойдёт в VFP8, но большая часть примеров будет и там работать.
За вас эту работу никто делать не будет. По крайней мере бесплатно


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Конвертация файлов из xml в dbf
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
LUCIAN
Cегодня корректировал программу в связи с переходом р/с по системе IBAN. Поэтому можете сделать
что-то похожее для своего случая
[attachment 27949 facepalm.png]
Это не просто ужасный код, это МЕГА-ужасный код для работы с xml.


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Конвертация файлов из xml в dbf
ssa

Сообщений: 13008
Откуда: Москва
Дата регистрации: 23.03.2005
Файлик VO_SALDORAS_2_114_15_04_01_01.xsd случайно нигде не завалялся?


------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: Конвертация файлов из xml в dbf
Natka
Автор

Сообщений: 8
Дата регистрации: 07.07.2017
Файла xsd нет.
Ratings: 0 negative/0 positive
Re: Конвертация файлов из xml в dbf
Natka
Автор

Сообщений: 8
Дата регистрации: 07.07.2017
Спасибо большое, буду смотреть!
Ratings: 0 negative/0 positive
Re: Конвертация файлов из xml в dbf
ssa

Сообщений: 13008
Откуда: Москва
Дата регистрации: 23.03.2005
Natka
Файла xsd нет.
Ладно, прикладываю самопальный.
Local xa As Xmladapter
xStr = 'C:\temp\VO_SALDORAS_1300_011000_20170516_142830_52110.xml'
xa = Createobject('XMLAdapter')
xa.LoadXML(xStr, .T.)
?xa.IsLoaded
?xa.Tables.Count
For i = 1 To xa.Tables.Count
xa.Tables[i].ToCursor()
Brow
Next
Надеюсь, пути к файлам сможете поправить?


------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/1 positive
Re: Конвертация файлов из xml в dbf
Natka
Автор

Сообщений: 8
Дата регистрации: 07.07.2017
Спасибо, буду разбираться!
Ratings: 0 negative/0 positive
Re: Конвертация файлов из xml в dbf
LUCIAN

Сообщений: 343
Откуда: Лида Беларусь
Дата регистрации: 25.03.2008
Igor Korolyov
Это не просто ужасный код, это МЕГА-ужасный код для работы с xml.
В vfp6 для работы с xml не удалось найти прекрасного кода поэтому и получился такой мега-ужас.
Ratings: 0 negative/0 positive
Re: Конвертация файлов из xml в dbf
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
CreateObject("MSXML2.DomDocument") - без проблем работает и в VFP5.


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Конвертация файлов из xml в dbf
ssa

Сообщений: 13008
Откуда: Москва
Дата регистрации: 23.03.2005
Igor Korolyov
CreateObject("MSXML2.DomDocument") - без проблем работает и в VFP5.
ВОТ, кстати, пример использования. В курсор, конечно, не загоняет, но хоть приводит в вид, с которым можно работать без особых извращений.


------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 21 (Гостей: 21)

© 2000-2024 Fox Club 
Яндекс.Метрика