1 / 1 / 0
Регистрация: 02.07.2017
Сообщений: 4
1

Парсинг XML юзаем Msxml2 (DOMDocument.6.0)

02.09.2013, 13:44. Показов 15194. Ответов 2
Метки нет (Все метки)

За основу взята тема Реализация парсинга XML файлов

Цель: вытащить название улицы из ресурса по ссылке http://geocode-maps.yandex.ru/... lang=en-US.
Это геолокатор от яндекс.

Проблема в том, что если есть в XML атрибуты типа неймспейсов, то код отказывается работать. Если их убрать руками (предварительно убрав все атрибуты, сохранив на жестком диске и перепрописав путь скрипта туда), то всё работает.

Ошибка: требуется объект.
Код: 800A01A8

Для упрощения тестирования я создавал мини XML, что то вроде:
XML
1
2
3
4
5
6
7
8
9
10
11
12
<ymaps>
<metaDataProperty>
    <GeocoderResponseMetaData>
        <request>E134.854,S25.828</request>
        <found>1</found>
        <results>10</results>
        <Point>
            <pos>134.854412 -25.828084</pos>
        </Point>
    </GeocoderResponseMetaData>
</metaDataProperty>
</ymaps>
соответственно вносим и в скрипт изменения для selectSingleNode "//ymaps/metaDataProperty/GeocoderResponseMetaData/Point/pos".

при таком раскладе работает.

Ниже скрипт (VBScript):

Visual Basic
1
2
3
4
5
6
7
8
9
10
Dim info
Dim xml
Set xml = CreateObject("Msxml2.DOMDocument.6.0")
xml.async = False
xml.Load "C:\4.xml"
WScript.Sleep 200
 
Set info = xml.selectSingleNode("//ymaps/metaDataProperty/GeocoderResponseMetaData/Point/pos")
 
msgbox Cstr(info.text)

Для наглядности в XML меняем <ymaps> на <ymaps xmlns="http://maps.yandex.ru/ymaps/1.x"> (упрощённая версия того, что выдаёт яндекс) и получаем ошибку.

Кто, что думает?
1

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.09.2013, 13:44
Ответы с готовыми решениями:

Как подсунуть MSXML2.DOMDocument "свой" XML?
Есть работающий код, который считывает через MSXML2.DOMDocument xml-файл по...

Msxml2.DOMDocument - Access is denied
var currXML = new ActiveXObject('Msxml2.DOMDocument.4.0'); currXML.async = false;...

создание програмно MSXML2.DomDocument на win2000servSP4
скачал с РСДН скрипт дерева... разработал на вин2003сервер всё работает обалденно... думаю ну...

объект Msxml2.DOMDocument, метод load
Hello, All! Подскажите кто-нибудь почему у меня не получается загрузить xml-документ? Причем...

2
Эксперт WindowsАвтор FAQ
17663 / 7507 / 887
Регистрация: 25.12.2011
Сообщений: 11,279
Записей в блоге: 16
15.09.2013, 15:27 2
OLEGarh, можно вообще не заморачиваться.

Использовать объект:

Visual Basic
1
Set xml = CreateObject("Microsoft.XMLDOM")
и потом тупо написать:

Visual Basic
1
Set info = xml.documentElement.selectSingleNode("//pos")
2
2 / 2 / 1
Регистрация: 01.04.2016
Сообщений: 57
27.12.2019, 14:06 3
Спасибо, оказывается Load это загрузка не только из файла а из веб!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.12.2019, 14:06

Свойство у объекта MSXML2.DOMDocument, чтобы каждый новый тэг писался с красной строки
добрый день у меня такой вопрос есть: Я создаю xml-файл с помощью MSXML2.DOMDocument. И если...

Импорт нескольких xml через SXML2.DOMDocument vba
Подскажи пожалуйста как реализовать обработку нескольких файлов из папки на локальном диске по...

Получить значение tipo из xml файла посредством domDocument
Добрый день, уважаемые пользователи ! Подскажите пожалуйста как достать значение tipo из xml файла...

Ошибка формирования xml с использованием классов SimpleXMLElement, DOMDocument
Добрый день! Подскажите могут ли в принципе эти два класса (SimpleXMLElement, DOMDocument)...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.