Страница 1 из 1

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

СообщениеДобавлено: 22.08.2008 (Пт) 15:45
Rojohn
Всем привет!
Никак не могу понять алгоритм перевода 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!
Спасибо заранее!

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

СообщениеДобавлено: 26.08.2008 (Вт) 14:10
alibek
Столбцами в CSV будут тэги или атрибуты?
Обычно в таких случаях в первый проход считывают все возможные тэги (или атрибуты), а вторым проходом осуществляют собственно выгрузку.
Кроме того, приведи более полный пример исходных данных. Есть подозрение, что можно обойтись XPath.

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

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

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

СообщениеДобавлено: 18.09.2008 (Чт) 13:37
RayShade
Это надо делать через XSL :) Написать темплейт, который потом просто применять ко всем тегам.

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

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

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

СообщениеДобавлено: 19.09.2008 (Пт) 20:44
tyomitch
XSL с Офисом никак не связан. С реляционными связями вроде бы тоже.

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

СообщениеДобавлено: 19.09.2008 (Пт) 21:53
Rojohn
Ну да, он связан с IExplorerom. Насколько знаю он является составляющей MSXML, но синтаксиса формирования его шаблонов из VB6 не знаю, хотя библиотека MSXML вроде там есть... Может кто подсобит с примерчиком из vb6?