|
Разбор XML
|
|||
---|---|---|---|
#18+
Есть XML файл В нем есть ТЭГ "USL" Который имеет набор тегов "ID_1" , "ID_2" и других <USL> <ID_1>1 </ID_1> <ID_2>11 </ID_2> ... </USL> <USL> <ID_1>2 </ID_1> <ID_2>22 </ID_2> ... </USL> <USL> <ID_1>3 </ID_1> <ID_2>33 </ID_2> ... </USL> Нужно получить с помощью 'msxml2.DomDocument.3.0' dbf таблицу USL с полями ID_1,ID_2 xmlobj=CREATEOBJECT('msxml2.DomDocument.3.0') xmlobj.load(ALLTRIM(m.xmlFileName)) ..... ??? .... Посоветуйте как ? Через Адаптер не нужно. описанный пример - это необходимый мне фрагмент для решения большой другой задачи ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2011, 13:25 |
|
Разбор XML
|
|||
---|---|---|---|
#18+
loXML = CREATEOBJECT("MSXML.DOMDocument") loXML.ASYNC=.F. loXML.load(m.xml_link) IF loXML.parseError.errorCode<>0 m.ans=MESSAGEBOX('Ошибка получения данных от сервиса '+CHR(13)+'Код ошибки: '+ALLTRIM(STR(loXML.parseError.errorCode))+CHR(13)+'Описание ошибки: '+loXML.parseError.srcText+CHR(13)+'Продолжить обработку??',20,'Ошибка!') IF m.ans<>6 RETURN ENDIF ENDIF loXMLNodes=loXML.getElementsByTagName("SearchStatus") loNodes = loXMLNodes.nextNode m.IdCode=loNodes.getElementsByTagName("IdCode").item(0).text m.SecondName=loNodes.getElementsByTagName("SecondName").item(0).text m.FirstName=loNodes.getElementsByTagName("FirstName").item(0).text m.MiddleName=loNodes.getElementsByTagName("MiddleName").item(0).text RELEASE loNodes RELEASE loXMLNodes RELEASE loXML ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2011, 14:05 |
|
Разбор XML
|
|||
---|---|---|---|
#18+
Спасибо за ответ Утояняю - необх учесть ID_PAC внешнего ТЭГА Есть XML файл: В нем есть ТЭГи "PAC" , "USL" <PAC> <ID_PAC>1</ID_PAC> <USL> <ID_USL>1 </ID_USL> ... </USL> <USL> <ID_USL>2 </ID_USL> ... </USL> <USL> <ID_USL>3</ID_USL> ... </USL> </PAC> <PAC> <ID_PAC>2</ID_PAC> <USL> <ID_USL>1 </ID_USL> ... </USL> <USL> <ID_USL>2 </ID_USL> ... </USL> <USL> <ID_USL>3</ID_USL> ... </USL> </PAC> Нужно получить с помощью 'msxml2.DomDocument.3.0' dbf таблицу USL с полями ID_PAC, ID_USL ----------------------- id_pac : id_usl -------------------------- 1 ............1 1............ 2 1.............3 2.............1 2.............2 2.............3 В Вашем примере нет цикла для обхода всех ТЭГОВ <PAC> ... |
|||
:
Нравится:
Не нравится:
|
|||
01.01.2012, 09:32 |
|
Разбор XML
|
|||
---|---|---|---|
#18+
Да Вы батенька лентяй .... у меня нету опыта работы с XML но поковырявшись 30 мин получился следующий код Имеем следующий XML Код: xml 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.
Ну и парсим его таким кодом Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
Повторюсь я с XML опыта работы не имею скрипт написал за пол часа с перекуром и кофепитием наверняка есть более правильные варианты разбора не ленитесь пользоваться поиском по форуму если не здесь, то на фоксклубе запрос типа вашего наверняка уже разжевывали ну и не ждите что Вам всегда будут давать готовые решения, пробуйте разобраться сами ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2012, 17:05 |
|
Разбор XML
|
|||
---|---|---|---|
#18+
2 alm2 Учитывая тэг USL и тот факт, что вы из Самары.... вы не пакет со счетом ОМС пытаетесь разобрать? Если так, то можно воспользоваться ковертером, который МИАЦ написал. Корявый, долго работает, но если его рефокснуть, то внутри есть кусок кода, который позволяет полностью разобрать XML-ку ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2012, 09:19 |
|
Разбор XML
|
|||
---|---|---|---|
#18+
alm2, Может стоит посмотреть в сторону XMLTOCURSOR( )? Как то и код короче в разы получится. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2012, 10:22 |
|
Разбор XML
|
|||
---|---|---|---|
#18+
2 DV_RUS Если там реально пакет по ОМС, то XMLTOCURSOR не прокатит - слишком ветвистая структура. На FoxClub говорят, что такие XML-ки только ручками расковыривать. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2012, 11:49 |
|
Разбор XML
|
|||
---|---|---|---|
#18+
Koryuu, Выгрузка в ФНС (НДФЛ-2) также идет в XML. Структура очень ветвистая. А ПО у них Fox`овое. Может, стоит в эту сторону посмотреть? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2012, 11:49 |
|
Разбор XML
|
|||
---|---|---|---|
#18+
Grin, У меня возник подобный вопрос. нужно парсить файл с аналогичной структурой, но тегов побольше. Я Ваш код проверяю курсор оказывается пустым. С чем это связано? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2012, 16:25 |
|
Разбор XML
|
|||
---|---|---|---|
#18+
2Дима1991, Да, похоже я там чегото потерял попробуйте такой код Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2012, 20:05 |
|
Разбор XML
|
|||
---|---|---|---|
#18+
Grin, сейчас работает. А как быть если структура немного сложнее. Например у меня такова структура: <zl_list> <zap> <pacient> <fam>Петров</fam> <im>Сергей</im> <ot>Михайлович</ot> </pacient> </zap> </zl_list> как создать курсор с данные из тега Pacient. Т.е. содержащая поля FAM,IM,OT. с этим не могу разобраться ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2012, 09:56 |
|
Разбор XML
|
|||
---|---|---|---|
#18+
Дима1991, добраться до ноды <pacient>, вытащить текст, скормить полученный текст xmltocursor-у. В теге "пациент" вложенных тегов нет, так что вот тут xmltocursor как раз подойдёт. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2012, 10:17 |
|
Разбор XML
|
|||
---|---|---|---|
#18+
tanglir, в том то и дело что я не знаю как туда добраться. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2012, 10:20 |
|
Разбор XML
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
Вот вам чуть пофиксенный пример Грина, дальше сами думайте. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2012, 10:25 |
|
Разбор XML
|
|||
---|---|---|---|
#18+
tanglir, нет нет, он в поле id_usl выводит все содержимое тега pacient. А как сделать чтобы каждый подтег выводился в отдельном столбике. fam отдельно, im отдельно и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2012, 10:46 |
|
Разбор XML
|
|||
---|---|---|---|
#18+
если вам не сложно подскажите как написать чтобы вот содержимое тега pacient выводилось в отдельных столбиках. я его разбирать буду потом и по аналогии делать для других тегов. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2012, 10:48 |
|
Разбор XML
|
|||
---|---|---|---|
#18+
как разбирать отдельные теги внутри тега pacient? а то все теги в один столбик копируются если ваш код применять ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2012, 11:45 |
|
Разбор XML
|
|||
---|---|---|---|
#18+
Дима1991, В атаче xml с Вашей структурой, который нормально парситься Дальше попробуйте на этом xml пошагово в окне command отработать Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2012, 12:10 |
|
Разбор XML
|
|||
---|---|---|---|
#18+
Grin, т.е вы имете ввиду после создания курсора НЕ ПИСАТЬ вот это: loXMLNodes=loXML.getElementsByTagName("zap") loNodes = loXMLNodes.nextNode FOR i1=1 TO loXMLNodes.length loXMLNodes2=loNodes.getElementsByTagName("pacient") FOR i2=1 TO loXMLNodes2.length m.usl=loXMLNodes2.item(i2-1).text INSERT INTO test_xml VALUES (i1,m.usl) loNodes2 = loXMLNodes2.nextNode endf loNodes = loXMLNodes.nextNode endf а сразу писать так? ? loXML.parseError.errorCode &&код ошибки парсинга xml ? loXML.parseError.reason &&текст ошибки парсинга xml ? loXML.getElementsByTagName("zl_list/zap/pacient").item(0).text &&смотрим содержимое тега pacient ? loXML.getElementsByTagName("zl_list/zap/pacient/fam").item(0).text &&смотрим содержимое тега fam ? loXML.getElementsByTagName("zl_list/zap/pacient/im").item(0).text &&смотрим содержимое тега im ? loXML.getElementsByTagName("zl_list/zap/pacient/ot").item(0).text &&смотрим содержимое тега ot ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2012, 12:27 |
|
Разбор XML
|
|||
---|---|---|---|
#18+
мне нужно в курсор вывести в отдельных столбиках fam,im,ot и еще другие поля.. вот это мне непонятно самое важное ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2012, 12:30 |
|
Разбор XML
|
|||
---|---|---|---|
#18+
Grin, а вы не можете написать код, который в курсор выведет поле fam и im допустим. в отдельных столбцах как таблица. я потом хочу разобрать этот код и остальное сам доделать. создаю курсор: CREATE CURSOR pacient ( ; fam C(30), ; im C(30)) вот он содержит два поля. помогите вывести в эти два поля данные из xml файла из тега pacient. этих тегов может быть 1 или 100 в такой структуре: ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2012, 12:37 |
|
Разбор XML
|
|||
---|---|---|---|
#18+
вот я так пишу не знаю правильно или нет: CREATE CURSOR test_xml ( ; fam C(30), ; im C(30), ; ot C(30)) loXML = CREATEOBJECT("msxml2.DomDocument.3.0") loXML.ASYNC=.F. loXML.load("D:\2.XML") ? loXML.parseError.errorCode ? loXML.parseError.reason ? loXML.getElementsByTagName("zl_list/zap/pacient").item(0).text fam=loXML.getElementsByTagName("zl_list/zap/pacient/fam").item(0).text im=loXML.getElementsByTagName("zl_list/zap/pacient/im").item(0).text ot=loXML.getElementsByTagName("zl_list/zap/pacient/ot").item(0).text RELEASE loXML SELECT test_xml brow ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2012, 12:40 |
|
Разбор XML
|
|||
---|---|---|---|
#18+
Дима1991tanglir, нет нет, он в поле id_usl выводит все содержимое тега pacientЭто был пример. Хотя выяснилось, что не всё так уж очевидно. Вот что-то работающее: Код: 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.
В итоге получаем курсор с записями о пациентах. Вроде бы то самое, чего вам и хотелось. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2012, 12:48 |
|
Разбор XML
|
|||
---|---|---|---|
#18+
tanglir, что делается в этой строке и что за свойство должно быть вы не можете сказать? Если бы я имел опыт работы с xml то было легче наверное, но я первый раз столкнулся с этим. Тем более я новичек в фоксе, знаю не много m.xmldata='<?xml version = "1.0" encoding="Windows-1251" standalone="yes"?><vfpdata>'; +loXMLNodes2.Item(i2-1).свойство; +'</vfpdata>' ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2012, 12:54 |
|
|
start [/forum/topic.php?fid=41&msg=37608913&tid=1583368]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
42ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
others: | 260ms |
total: | 404ms |
0 / 0 |