powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Проблема с раскруткой xml файла в dbf
7 сообщений из 7, страница 1 из 1
Проблема с раскруткой xml файла в dbf
    #39567543
dima_18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемые члены форума!

Извините за беспокойство. Подскажите, пожалуйста как решить след. задачу.
Есть xml файл (привожу часть текста его):
<?xml version="1.0" encoding="UTF-8" ?>
- <ВыгрузкаРеализаций xmlns=" http://it-cons.ru" xmlns:xs=" http://www.w3.org/2001/XMLSchema" xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance">
- <СтрокиВРеализации>
<СтрокаВРеализации Услуга="Консультация невролога" НомерОтделения="8" НомерУслуги="1805" Количество="1" Сумма="1346" Документ="Реализация товаров 0000-003637 от 01.11.2017 8:02:14" ДатаДокумента="2017-11-01" ДатаОказанияУслуги="0001-01-01" ФИОВрача="Коновалова Александра Владимировна" ТабНомерВрача="10022035" />
<СтрокаВРеализации Услуга="Оформление дубликата медицинской документации (1 лист)" НомерОтделения="71" НомерУслуги="1587" Количество="2" Сумма="16" Документ="Реализация товаров 0000-003638 от 01.11.2017 8:10:28" ДатаДокумента="2017-11-01" ДатаОказанияУслуги="0001-01-01" ФИОВрача="" ТабНомерВрача="0" />
<СтрокаВРеализации Услуга="Забор крови из вены на анализ" НомерОтделения="18" НомерУслуги="7" Количество="1" Сумма="103" Документ="Реализация товаров 0000-003639 от 01.11.2017 8:14:44" ДатаДокумента="2017-11-01" ДатаОказанияУслуги="0001-01-01" ФИОВрача="Калашникова Ольга Юрьевна" ТабНомерВрача="10022012" />

Мне нужно сделать из него dbf со следующими полями:
Услуга
НомерОтделения
НомерУслуги
Количество
Сумма
Документ
ДатаДокумента
ДатаОказанияУслуги
ФИОВрача
ТабНомерВрача

Слезно прошу помогите пожалуйста, с кодом или пришлите пож-та пример, как Вы делаете это.
Спасибо большое!
...
Рейтинг: 0 / 0
Проблема с раскруткой xml файла в dbf
    #39567626
Grin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пример разбора XML
Надеюсь сам сможешь данные запихнуть в таблицу

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
CLEAR
PUBLIC m.xml, m.loXML 

TEXT TO m.xml TEXTMERGE NOSHOW
<?xml version="1.0" encoding="Windows-1251"?>
<list>
<СтрокаВРеализации Услуга="Консультация невролога" НомерОтделения="8" НомерУслуги="1805" Количество="1" Сумма="1346" Документ="Реализация товаров 0000-003637 от 01.11.2017 8:02:14" ДатаДокумента="2017-11-01" ДатаОказанияУслуги="0001-01-01" ФИОВрача="Коновалова Александра Владимировна" ТабНомерВрача="10022035" />
<СтрокаВРеализации Услуга="Оформление дубликата медицинской документации (1 лист)" НомерОтделения="71" НомерУслуги="1587" Количество="2" Сумма="16" Документ="Реализация товаров 0000-003638 от 01.11.2017 8:10:28" ДатаДокумента="2017-11-01" ДатаОказанияУслуги="0001-01-01" ФИОВрача="" ТабНомерВрача="0" />
<СтрокаВРеализации Услуга="Забор крови из вены на анализ" НомерОтделения="18" НомерУслуги="7" Количество="1" Сумма="103" Документ="Реализация товаров 0000-003639 от 01.11.2017 8:14:44" ДатаДокумента="2017-11-01" ДатаОказанияУслуги="0001-01-01" ФИОВрача="Калашникова Ольга Юрьевна" ТабНомерВрача="10022012" />
</list>
ENDTEXT


loXML = CREATEOBJECT("msxml2.DomDocument")
loXML.ASYNC=.F.
loXML.loadXML(m.xml)

? loXML.parseError.reason

FOR i=1 TO loXML.getElementsByTagName("СтрокаВРеализации").length
	m.nodes=loXML.getElementsByTagName("СтрокаВРеализации").item(i-1)
	? '*********************   node = '+ALLTRIM(STR(i))+'   *********************'
	FOR i1=1 TO 10
		? m.nodes.attributes(i1-1).baseName+' ===> '+;
		m.nodes.attributes(i1-1).nodeValue
	endf  
endf 
...
Рейтинг: 0 / 0
Проблема с раскруткой xml файла в dbf
    #39567990
dima_18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Grin, большое спасибо за подсказку.
У меня несколько вопросов:
1. Т.е. сначала Вы делаете новый xml файл? Т.е. в формируете строчки руками? Я так понимаю.
2. К сожалению в таблицу ни разу не скидывал, не покажете пожалуйста?

Спасибо большое.
...
Рейтинг: 0 / 0
Проблема с раскруткой xml файла в dbf
    #39568002
dima_18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Grin, извините за глупый вопрос. Покажите, пожалуйста на данном примере как Вы записываете в таблицу dbf. Т.е. вначала мы создаем таблицу с этими 10 полями? А потом.
Пожалуйста покажите как Вы это делаете.
Спасибо большое.
...
Рейтинг: 0 / 0
Проблема с раскруткой xml файла в dbf
    #39568007
dima_18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да и сразу еще один вопрос. У меня файл xml - очень длинный я его хотел открыть по f3 и скопировать в программу как Вы показываете, я это сделал, но мне выскочила ошибка - файл слишком длинный.
Подскажите пожалуйста. Как мне программно это делать.

Спасибо большое
...
Рейтинг: 0 / 0
Проблема с раскруткой xml файла в dbf
    #39568028
dima_18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dima_18, у меня в моем xml файле - более трех тысяч строк. Я должен наверное как-то их считать в массив или как-то в цикле проходить по этому файлу? Т.к. в тело программы я не смогу скопировать руками данные строки, т.к. выдается ошибка - файл слишком велик. Помогите пожалуйста с этим. Спасибо
...
Рейтинг: 0 / 0
Проблема с раскруткой xml файла в dbf
    #39569135
Grin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dima_18Grin, большое спасибо за подсказку.
У меня несколько вопросов:
1. Т.е. сначала Вы делаете новый xml файл? Т.е. в формируете строчки руками? Я так понимаю.
2. К сожалению в таблицу ни разу не скидывал, не покажете пожалуйста?

Спасибо большое.

1. Нет, XML поправил для примера

нужно понимать как вы будете получать XML (например через веб сервис или вам его на мыло будут присылать)
в зависимости от источнка - определяется инструмент разбора
Ищите здесь на форуме (или на фок склубе) по MSXML2.XMLHTTP, MSXML2.DomDocument
или по старинке FOpen, FRead, FClose

2. читайте букварь по create table, create cursor, append, insrt, replace, gather memvar
благо букварь на русский язык переведен ребятами из фокс клуба
там же есть примеры как писать данные в таблицы\курсоры

dima_18dima_18, у меня в моем xml файле - более трех тысяч строк. Я должен наверное как-то их считать в массив или как-то в цикле проходить по этому файлу? Т.к. в тело программы я не смогу скопировать руками данные строки, т.к. выдается ошибка - файл слишком велик. Помогите пожалуйста с этим. Спасибо .


замените loXML.loadXML(m.xml) на
loXML.load('Путь к XML файлу на диске')

Пример создание и заполнения курсора
(с типизацией данных было лениво возиться, поэтому все поля в char )
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
CLEAR
PUBLIC m.xml, m.loXML

TEXT TO m.xml TEXTMERGE NOSHOW
<?xml version="1.0" encoding="Windows-1251"?>
<list>
<СтрокаВРеализации Услуга="Консультация невролога" НомерОтделения="8" НомерУслуги="1805" Количество="1" Сумма="1346" Документ="Реализация товаров 0000-003637 от 01.11.2017 8:02:14" ДатаДокумента="2017-11-01" ДатаОказанияУслуги="0001-01-01" ФИОВрача="Коновалова Александра Владимировна" ТабНомерВрача="10022035" />
<СтрокаВРеализации Услуга="Оформление дубликата медицинской документации (1 лист)" НомерОтделения="71" НомерУслуги="1587" Количество="2" Сумма="16" Документ="Реализация товаров 0000-003638 от 01.11.2017 8:10:28" ДатаДокумента="2017-11-01" ДатаОказанияУслуги="0001-01-01" ФИОВрача="" ТабНомерВрача="0" />
<СтрокаВРеализации Услуга="Забор крови из вены на анализ" НомерОтделения="18" НомерУслуги="7" Количество="1" Сумма="103" Документ="Реализация товаров 0000-003639 от 01.11.2017 8:14:44" ДатаДокумента="2017-11-01" ДатаОказанияУслуги="0001-01-01" ФИОВрача="Калашникова Ольга Юрьевна" ТабНомерВрача="10022012" />
</list>
ENDTEXT

CREATE CURSOR TmpCur ('Услуга' c(70) null,'НомерОтделения' c(10) null,'НомерУслуги' c(10) null,'Количество' c(10) null,'Сумма' c(18) null,'Документ' c(250) null,'ДатаДокумента' c(20) null,;
					  'ДатаОказанияУслуги' c(20) null,'ФИОВрача' c(70) null,'ТабНомерВрача' c(20) null)
SCATTER MEMVAR

loXML = CREATEOBJECT("msxml2.DomDocument")
loXML.ASYNC=.F.
loXML.loadXML(m.xml)

? loXML.parseError.reason

FOR i=1 TO loXML.getElementsByTagName("СтрокаВРеализации").length
	m.nodes=loXML.getElementsByTagName("СтрокаВРеализации").item(i-1)
	? '*********************   node = '+ALLTRIM(STR(i))+'   *********************'
	FOR i1=1 TO 10
		? m.nodes.attributes(i1-1).baseName+' ===> '+;
		m.nodes.attributes(i1-1).nodeValue
		
		stro="stor '"+ALLTRIM(m.nodes.attributes(i1-1).nodeValue)+"' to m."+ALLTRIM(m.nodes.attributes(i1-1).baseName)
		EXECSCRIPT(stro)
	endf
	
	SELECT TmpCur 
	APPEND BLANK 
	GATHER MEMVAR 
endf 

BROWSE



Это пример и не факт что он написан "правильно"
вам нужно букварь изучать
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Проблема с раскруткой xml файла в dbf
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]