Перевод XML в текст из VB6.0

Если название форума вам о чём-то говорит, то значит, внутри вы найдете что-то для себя полезное.
Rojohn
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 439
Зарегистрирован: 22.06.2005 (Ср) 11:00
Откуда: Moscow city

Перевод XML в текст из VB6.0

Сообщение Rojohn » 22.08.2008 (Пт) 15:45

Всем привет!
Никак не могу понять алгоритм перевода XML в плоский и нереляционный текст. Это нужно для конвертирования данных в софт, который нельзя менять. Условия: есть стандартный, заранее известный набор тегов, но внутри него некоторые могут быть пропущены случайным образом. Например:

<?xml version="1.0" encoding="windows-1251" ?>
<_DATA_>
<Teg1>
<Teg2 Attr1="1" Attr2="Первый"/>
<Teg2 Attr1="2" Attr2="Второй"/>
<Teg3/>
</Teg1>
<Teg1>
<Teg2/>
<Teg1/>
</_DATA_>

Вывести в итоге это всё надо в текстовый (.CSV) файл, в котором первой строкой идут неповторные заголовки, например Teg2 & "_" & Attr1,Teg2 & "_" & Attr2 и т.д. Затем остальные значения атрибутов в плоском виде. В случае разветвления , повторяется вся остальная предыдущая строчка. Пытался сделать циклами For Each, но не смогу прицепиться к жесткой последовательности заголовков и, в тоже время, непредсказуемо изменяющейся структуре тегов (наличие/отсутствие).
Плиз, подскажите как сделать проще, но не в .NET, а с помощью XMLDom!
Спасибо заранее!
Делитесь опытом и Вам воздастся! Кто разместит полезный код - тому воздастся вдвойне! :)

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Перевод XML в текст из VB6.0

Сообщение alibek » 26.08.2008 (Вт) 14:10

Столбцами в CSV будут тэги или атрибуты?
Обычно в таких случаях в первый проход считывают все возможные тэги (или атрибуты), а вторым проходом осуществляют собственно выгрузку.
Кроме того, приведи более полный пример исходных данных. Есть подозрение, что можно обойтись XPath.
Lasciate ogni speranza, voi ch'entrate.

Rojohn
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 439
Зарегистрирован: 22.06.2005 (Ср) 11:00
Откуда: Moscow city

Re: Перевод XML в текст из VB6.0

Сообщение Rojohn » 26.08.2008 (Вт) 18:46

Список атрибутов - первая строка (заранее размечаю по стандартному списку атрибутов). В строке каждая запись соответствует атрибуту в первой строке, отсутствующие помечаются как "". Но простым перебором я уже понял как делать (делаю дублирующий файл XML в оперативке), а вот что такое XPath? Я с этим не сталкивался... Его можно использовать в vb6.0? А то, может облегчило бы мне ручную работу!
Делитесь опытом и Вам воздастся! Кто разместит полезный код - тому воздастся вдвойне! :)

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Re: Перевод XML в текст из VB6.0

Сообщение RayShade » 18.09.2008 (Чт) 13:37

Это надо делать через XSL :) Написать темплейт, который потом просто применять ко всем тегам.

Rojohn
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 439
Зарегистрирован: 22.06.2005 (Ср) 11:00
Откуда: Moscow city

Re: Перевод XML в текст из VB6.0

Сообщение Rojohn » 18.09.2008 (Чт) 16:55

К сожалению через XSL сделать не могу по причине того, что нужен софт, не зависящий от установленного офиса. К стому же в XSL данные подгружаются реляционно, а мне, вероятно, придётся всё раскладывать в строку с переименованием ID и, возможно, их формированием из названий тегов. Хотя, тут, по слухам, вообще задачу поменяют и я буду класть реляционно или почти реляционно сразу в таблицу Oracle. Так что пока вопрос временно или совсем отпадает - дальше видно будет:) Спасибо за отклики!
Делитесь опытом и Вам воздастся! Кто разместит полезный код - тому воздастся вдвойне! :)

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Re: Перевод XML в текст из VB6.0

Сообщение tyomitch » 19.09.2008 (Пт) 20:44

XSL с Офисом никак не связан. С реляционными связями вроде бы тоже.
Изображение

Rojohn
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 439
Зарегистрирован: 22.06.2005 (Ср) 11:00
Откуда: Moscow city

Re: Перевод XML в текст из VB6.0

Сообщение Rojohn » 19.09.2008 (Пт) 21:53

Ну да, он связан с IExplorerom. Насколько знаю он является составляющей MSXML, но синтаксиса формирования его шаблонов из VB6 не знаю, хотя библиотека MSXML вроде там есть... Может кто подсобит с примерчиком из vb6?
Делитесь опытом и Вам воздастся! Кто разместит полезный код - тому воздастся вдвойне! :)


Вернуться в XML/XSL/XHTML

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5

    TopList