Реклама i
Стань нашим партнером - зарабатывай с нами!
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Библиотека DLL для чтения XML файлов

Библиотека DLL для чтения XML файлов

Ответ
Поиск в этой теме
Непрочитано 02.11.2021, 13:23
Библиотека DLL для чтения XML файлов
МишаИнженер
 
Регистрация: 14.12.2008
Сообщений: 1,079

Какую библиотеку dll лучше всего использовать для чтения XML файлов на VBA?
Прочитал про XmlTextReader
https://docs.microsoft.com/ru-ru/tro...data-from-file
но не понял какой файл надо подключать командой Tools > Rferences в VBA Excel
Так же прочитал про Msxml2.DOMDocument.6.0
https://docs.microsoft.com/en-us/pre...56987(v=vs.85)
и тоже не понял какую библиотеку надо подключить в References
Подскажите пожалуйста что надо подключать для работы с файлами XML!
Просмотров: 3897
 
Автор темы   Непрочитано 03.11.2021, 12:50
#21
МишаИнженер


 
Регистрация: 14.12.2008
Сообщений: 1,079


Как можно посмотреть в файле xslt расположение узлов <contours> в которых описываются координаты точек полигонов?
У меня программа нашла 4 участка (узла) по запросу "//cad_number" (№5-8). Теперь мне надо найти разделы <contours> для каждого соответствующего участка.
В какую ветку мне надо перепрыгнуть надеюсь увидеть в xlst файле, только более подробном. Существует такой файл xlst?
Миниатюры
Нажмите на изображение для увеличения
Название: 4 участка из файла XML.png
Просмотров: 11
Размер:	50.7 Кб
ID:	242351  
МишаИнженер вне форума  
 
Непрочитано 03.11.2021, 12:56
#22
trir


 
Регистрация: 18.12.2010
Сообщений: 5,051


Во первых xml
во вторых ты всё не правильно делаешь ;=)

Получаю список узлов по пути //cadastral_blocks/cadastral_block/record_data/base_data/land_records
Для каждого:
Получаю кадастровый номер object/common_data/cad_number/text()
Получаю полигоны contours_location/contours
Линии contour/entity_spatial/spatials_elements/spatial_element
Точки Point Path="ordinates/ordinate" Xattr="y/text()" Yattr="x/text()"
trir вне форума  
 
Автор темы   Непрочитано 03.11.2021, 13:01
#23
МишаИнженер


 
Регистрация: 14.12.2008
Сообщений: 1,079


Это понятно что неправильно. Мне не хватает функции: "НайтиПарентУзелДляТекущегоУзла(ТекУзел, ИскомыйТэг)"
Сейчас напишу эту функцию и буду выполнять поиск узлов "contours" во всех парент объектах начиная с узла с тэгом "cad_number"
Найденный ближайший парент узел "по логике" будет содержать координаты точек полигона для узла "cad_number".
А сейчас в программе для всех четырех узлов "cad_number" находятся одинаковые списки координат. Вот в этом я считаю ошибка на данный момент
МишаИнженер вне форума  
 
Непрочитано 03.11.2021, 13:07
1 | #24
trir


 
Регистрация: 18.12.2010
Сообщений: 5,051


Цитата:
Мне не хватает функции: "НайтиПарентУзелДляТекущегоУзла(ТекУзел, ИскомыйТэг)"
parent:: — можно заменить на «..»

Но это не правильный метод - у land_records и build_records разный путь к геометрии
trir вне форума  
 
Автор темы   Непрочитано 03.11.2021, 13:12
#25
МишаИнженер


 
Регистрация: 14.12.2008
Сообщений: 1,079


Главное выйти на объект IXMLDOMElement и затем на свойство список childNodes. Для каждого элемента этого списка надо воспользоваться методом
Код:
[Выделить все]
Set objSelPropNodes = objectNode.SelectNodes(propertyPath)
Если найденный объект будет содержать узлы, то это и будут те самые координаты. Спасибо за ..!

----- добавлено через ~50 мин. -----
trir, можно в твоем ответе между текстовыми пояснениями и фрагментами кода поставить символ ":"?
Цитата:
Сообщение от trir Посмотреть сообщение
Получаю список узлов по пути //cadastral_blocks/cadastral_block/record_data/base_data/land_records
Для каждого:
Получаю кадастровый номер object/common_data/cad_number/text()
Получаю полигоны contours_location/contours
Линии contour/entity_spatial/spatials_elements/spatial_element
Точки Point Path="ordinates/ordinate" Xattr="y/text()" Yattr="x/text()"
Я что то не могу понять как мне твои советы применить в коде
В первой строке вижу запрос
Код:
[Выделить все]
//cadastral_blocks/cadastral_block/record_data/base_data/land_records
для функции SelectNodes
В следующих 3 строках не понятно.
А в 4 строке
Код:
[Выделить все]
"ordinates/ordinate" Xattr="y/text()" Yattr="x/text()"
вроде не хватает двойных запятых для правильного запроса.
Или это отдельные строки кода?
МишаИнженер вне форума  
 
Непрочитано 03.11.2021, 14:07
#26
trir


 
Регистрация: 18.12.2010
Сообщений: 5,051


это я из своего xml'я надёргал
путь к узлу - ordinates/ordinate
а x/text() - получить значение X узла
trir вне форума  
 
Автор темы   Непрочитано 03.11.2021, 14:19
#27
МишаИнженер


 
Регистрация: 14.12.2008
Сообщений: 1,079


Trir! В общем получилась прога для чтения координат на лист Excel, посмотри в прикрепленных файлах.
Теперь надо для проверки начертить эти контуры и проверять на пересечение с полилиниями полосы отвода
Потом вывести на лист сводную таблицу с информацией о найденных пересечениях и задача будет решена
Может есть "упрощающие фишки", позволяющие код получения координат контуров Росреестра сделать более простым и правильным?
Вложения
Тип файла: zip Кадастр.zip (367.2 Кб, 4 просмотров)
МишаИнженер вне форума  
 
Непрочитано 03.11.2021, 14:50
#28
trir


 
Регистрация: 18.12.2010
Сообщений: 5,051


1. Я в #3 уже привёл код на VBA, который это делает
2. Проще это делать в БД https://habr.com/ru/post/307294/ - там есть специальная команда STIntersection
3. Вместо полилиний лучше использовать MPolygon'ы
trir вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Библиотека DLL для чтения XML файлов

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Конвертация файлов Admin Прочее. Программное обеспечение 7515 19.03.2024 14:27
Библиотеки электронных книг Кочетков Андрей Поиск литературы, чертежей, моделей и прочих материалов 303 21.06.2023 08:35
DwgRuLispLib: Функция открытия диалога Open\Save As файла (файлов) Supermax Библиотека функций 20 14.03.2018 10:05
DwgRuLispLib: Команда. Загрузка lisp файлов из указанной папки VVA Библиотека функций 7 15.02.2018 10:10
Автокад в интернете, самое начало Mme St-Perle AutoCAD 86 12.05.2010 15:11