Как грамотно прочитать XML | |
---|---|
Andrey_321 Автор Сообщений: 109 Откуда: Могилев Дата регистрации: 21.10.2005 |
Пробовал через loXML = CreateObject("MSXML2.DOMDocument") не могу добраться до <ATTRIBUTE>.
Хотел через XMLAdapter что то не получается схему документа задать <ATTRIBUTE> хотелось бы как подчиненную таблицу. XML вида:
Исправлено 2 раз(а). Последнее : Andrey_321, 26.01.16 11:49 |
Re: Как грамотно прочитать XML | |
---|---|
alex; Сообщений: 2850 Откуда: Москва Дата регистрации: 23.11.2004 |
Если поможет код на VBA
Для xml Исправлено 2 раз(а). Последнее : alex;, 26.01.16 15:04 |
Re: Как грамотно прочитать XML | |
---|---|
sphinx Сообщений: 31166 Откуда: Каменск-Уральски Дата регистрации: 22.11.2006 |
1.В первую строку XML-файла (я его обозвал TEST.XML) следует поместить
2.Создать XSD-схему. Лучший вариант - использовать Visual Studio, а если надо вызывать из одной программы - рекомендую использовать транслятор на Java trang.jar. Строка получения XSD-схемы:
3.Создаем курсоры "object" и "attribute":
4.Проверяем загруженные данные:
5.Все необходимые программы выложил в архив: rghost.ru ------------------ "Veni, vidi, vici!"(с) Исправлено 1 раз(а). Последнее : sphinx, 26.01.16 14:46 |
Re: Как грамотно прочитать XML | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
loXML.selectNodes("//ATTRIBUTE") Только это не очень поможет в деле разбора иерархии Схему можно сделать в той же VisualStudio. Можно и руками прописать, хотя это несколько утомительно. Вот схема к приложенному примеру (в xsd файл её надо записывать в кодировке utf-8, хотя конкретно тут и нету никаких "неанглийских" символов) С такой схемой более-менее разбирается адаптер. Можно её "уточнять" задавая ограничения по размеру символьных полей, чтобы фокс их не делал memo, да и числовые типы вполне возможно надо сделать "поширше" - студия то предполагала размеры исходя из этих тестовых данных... Ессно что для полноценной работы в подчинённую таблицу надо добавлять поле ссылающееся на первичный ключ "родительской" таблицы. Для примера я в его качестве взял F_OBJECT_ID - тебе то виднее что там уникальный ключ а что нет. Возможно нужно будет и несколько полей подтягивать - если ключ составной... Да, сам xml-файл в данном случае должен быть в кодировке UTF-8, или, если он в win1251, то обязательно будет нужна декларация <?xml version="1.0" encoding="windows-1251"?>Собственно сам код
------------------ WBR, Igor |
Re: Как грамотно прочитать XML | |
---|---|
alex; Сообщений: 2850 Откуда: Москва Дата регистрации: 23.11.2004 |
Я для работы с xsd использовал "Oxygen XML Editor" - она генерит xsd, который потом удобно редактировать.
Она же показывает где xml не удовлетворяет схеме. Удобно. ее можно получить бесплатно на три месяца и несколько раз www.oxygenxml.com |
Re: Как грамотно прочитать XML | |
---|---|
Andrey_321 Автор Сообщений: 109 Откуда: Могилев Дата регистрации: 21.10.2005 |
Спасибо за оперативную помощь буду пробовать!
|
Re: Как грамотно прочитать XML | |
---|---|
Andrey_321 Автор Сообщений: 109 Откуда: Могилев Дата регистрации: 21.10.2005 |
Все сделал не пойму почему не работает на LOADXML парсер выдает ошибку "не удается найти указанный объект строка:0 позиция:0"? |
Re: Как грамотно прочитать XML | |
---|---|
sphinx Сообщений: 31166 Откуда: Каменск-Уральски Дата регистрации: 22.11.2006 |
А мой код пробовал? Ни Visual Studuo не надо, ни ручками рисовать XSD схему. Все этапы получения нужных курсоров можно оформить в одной программе. ------------------ "Veni, vidi, vici!"(с) |
Re: Как грамотно прочитать XML | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Очевидно, какой-то косяк в xsd или в xml файле.
В архиве все файлы которые у меня работают. ------------------ WBR, Igor |
Re: Как грамотно прочитать XML | |
---|---|
Andrey_321 Автор Сообщений: 109 Откуда: Могилев Дата регистрации: 21.10.2005 |
Я вообще не понимаю почему но loXAD.LOADXML([D:\MUSOR\disk\IPS-LM-TP-2016012115054651636590.xml],.T.) не работает а если положить в корень loXAD.LOADXML([IPS-LM-TP-2016012115054651636590.xml],.T.) то все ОК!? Как тогда указывать путь для xml (CD - что ли)?
Исправлено 2 раз(а). Последнее : Andrey_321, 29.01.16 11:10 |
Re: Как грамотно прочитать XML | |
---|---|
sphinx Сообщений: 31166 Откуда: Каменск-Уральски Дата регистрации: 22.11.2006 |
Да хоть где лежит. Не судьба программно (если по полному пути не взлетает, а времени разбираться нет) - перейти в нужный каталог? ------------------ "Veni, vidi, vici!"(с) |
Re: Как грамотно прочитать XML | |
---|---|
Asmodey Сообщений: 49 Откуда: Ноябрьск Дата регистрации: 25.05.2007 |
|
Re: Как грамотно прочитать XML | |
---|---|
ssa Сообщений: 12999 Откуда: Москва Дата регистрации: 23.03.2005 |
Жуть. Но кое-что понравилось:
1. ....length==1 2. атрибуты который неходятся ------------------ Лень - это неосознанная мудрость. |
Re: Как грамотно прочитать XML | |
---|---|
Asmodey Сообщений: 49 Откуда: Ноябрьск Дата регистрации: 25.05.2007 |
если есть универсальное решение как обойти всё дерево проще - буду рад увидеть |
Re: Как грамотно прочитать XML | |
---|---|
ssa Сообщений: 12999 Откуда: Москва Дата регистрации: 23.03.2005 |
1. Да я, в общем-то, не про обход дерева. 2. Писать свой парсер XML - задача из области изобретения велосипедов. ------------------ Лень - это неосознанная мудрость. |
Re: Как грамотно прочитать XML | |
---|---|
Crispy Сообщений: 18571 Дата регистрации: 16.05.2005 |
А в чем суть проблемы-то? Что нужно в итоге? ------------------ В действительности все иначе, чем на самом деле. (Антуан де Сент-Экзюпери) |
Re: Как грамотно прочитать XML | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Ну как минимум не писать километровые тормознутые и бредовые oxml.documentelement.childnodes(lvl_1_count).childnodes(lvl_2_count).childnodes(lvl_3_count).childnodes(lvl_4_count).childnodes пользоваться foreach, XPath запросами SelectNodes/SelectSingleNode - что частично видно выше в коде Алексея (alex; ) Хотя конкретно для указанного XML с его разбором вполне справляется XMLAdapter. А для большинства "сложных" XML-ей можно воспользоваться 2-х ступенчатой процедурой - сначала при помощи XSLT преобразовать эту сложную иерархическую структуру в простой набор "плоских таблиц" - заодно добавив куда надо поля "внешних ключей" (данные всё ещё в XML-е), а потом уже напрямую, безо всяких шаманств загрузить этот новый простой XML в XMLAdapter и получить фоксовые курсоры. ------------------ WBR, Igor Исправлено 1 раз(а). Последнее : Igor Korolyov, 04.02.16 15:00 |
Re: Как грамотно прочитать XML | |
---|---|
dafni_2004 Сообщений: 86 Дата регистрации: 17.11.2005 |
Добрый день - навязали нам тут работку ((
подскажите как лучше разобрать XML - сейчас просто разбираю через Fopen() .... но кто знает что будет rghost.ru |
Re: Как грамотно прочитать XML | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Такой сложносвязанный - вероятно лучше через XMLDOM (наподобии того что выше alex; писал) - если с адаптером заморачиваться то получится штук 15 курсоров, хотя оно скорее всего и не нужно столько.
------------------ WBR, Igor |
Re: Как грамотно прочитать XML | |
---|---|
sphinx Сообщений: 31166 Откуда: Каменск-Уральски Дата регистрации: 22.11.2006 |
Именно так. К тому же XML (право, не знал, пока не столкнулся с проблемой Татьяны Агафоновой) еще и через SAX можно контролировать правильность. Вручную тоже можно, но.. с мягким знаком. ------------------ "Veni, vidi, vici!"(с) |
© 2000-2024 Fox Club  |