Страницы: 1
RSS
Разбор (работа с) XML-схемы с целью импорта данных
 
Добрый день, уважаемые форумчане
подскажите, пожалуйста, как програмно
выбрать из XML-схемы нужные мне поля и вставить в нужные ячейки.

Использую вот такой макрос но он работает только на этапе импорта схемы:

Код
Sub ImportXMLSchema()
    Dim xmMap As XmlMap, strXPath As String
    Application.DisplayAlerts = False
    Set xmMap = ActiveWorkbook.XmlMaps.Add("D:\Мои документы\Вересень 2014\22.09.2014 ГУ46 22090343.xml", "egu46")
    Application.DisplayAlerts = True
    xmMap.AdjustColumnWidth = False
    xmMap.PreserveNumberFormatting = True
strXPath = "wagon_num"
ActiveSheet.[a1].XPath.SetValue xmMap, strXPath ' Строка не работает
    Set xmMap = Nothing
End Sub
 
П.С. Запись вышеупомянутой операции макрописцем ничего не дала, он почему-то ничего незафиксировал  :(
 
Ище вот такая информация по даному вопросу:
судя по ошибке которая выскакивает при отработке макроса - я неправильно "назвал" элемент
который собираюсь присвоить в [a1] . Прилагаю картинку где нужный элемент находится в схеме
П.С. Также пробовал задать strXPath таким образом:

Код
strXPath = "/egu46/approving/gu46/wagons/wagon/wagon_num"
 
без результата
 
Будет файл xml,будет и результат
 
Doober, к сожалению, как раз тот случай когда в файле (XML) конфиденциальная информация,
а изменить (удалить) определенный контент нет возможности  :( .
 
 
Цитата
Vitallic пишет:
а изменить (удалить) определенный контент нет возможности
Значит и помочь нет возможности...
На вскидку: поищите примеры использования "msxml2.DOMDocument"
Это компонент для работы с XML. Очень даже легко можно с его помощью вытащить данные конкретных полей.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
The_Prist, спасибо за вариант. Уже смотрел в эту сторону, как я понимаю это нестандартный способ (для Екселя)
обработки XML-данных, но если ничего не получится с Workbook.Range.Xpath.Setvalue, то буду углублятся в нюансы  "DOMDocument".
Продолжаю "лопатить" интернет, к сожалению в основном информация (вопросы и пути их решения) по даной проблематике на англ. языке
Как бы все просто расписано здесь, а вот в этомместе дается совет по использованию символа "@" в строке обращения к элементу схемы,
но нет самой схемы, а потому я неимею возможности проследить по какому принципу прописываеться strXPath
Если у кого-то есть опыт работы в этом направлении прошу поделится :)
 
опыта особо нет, но, по крайней мере, из хелпа следует, что должен быть полный путь там, и, черт его знает, попробуйте выгружать не в А1, а как в хелпе - создать ListObject и выгружать в него. Потом его можно будет убить.
Может, там несоответствие размерности или еще кака фигня.
F1 творит чудеса
 
Ага буду пробовать. Может незря куча примеров именно с ListObject
 
Цитата
Vitallic пишет: а изменить (удалить) определенный контент нет возможности
Это как?
Блокнотом открыть,вместо данных записать любое значение.
самая надежная из версий msxml -это 3
Если элемент выглядит так <ns2:body>,имеется префикс,то по XPath  возьмет только  DOMDocument30
 
Добрый вечер, Doober
Вы правы - через блокнот получилось править (я раньше пробовал через IE которым открылся документ по умолчанию).
Цитата
Если элемент выглядит так <ns2:body>,имеется префикс
именно так и выглядит множество элементов в даном файле
(например "ns1:egu46","ns1:approving" и т.д.)
файл
Изменено: Vitallic - 03.12.2014 18:46:58 (добавлена ссылка на файл)
 
могу предложить такой вариант.
Скрытый текст
Изменено: Doober - 04.12.2014 12:36:05
 
Doober, большое спасибо - все работает!
Для тех кто будет пользоваться поиском по форуму по вопросу XML и
работы с объектом Msxml2.DOMDocument оставляю ссылки.  
Страницы: 1
Наверх