|
Экспорт в xml по шаблону
|
|||
---|---|---|---|
#18+
Комрады, добрый день! Заставила меня судьба заняться таким вопросом, как экспорт из Access в xml. Да не просто экспорт, а хитрый. Небольшая предыстория. Есть файл xml определенного формата, который понимает определенное ПО. Вот один сегмент этого файла: + Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Вместо параметров "param..." подставляются значения из большой таблицы. В итоге формируется большой xml, в котором повторяются секции client с разными данными и скармливаются ПО. Первоначально проблему создания этого файла я решил довольно незамысловато - слияние Word и Excel с последующим копированием результата в txt и ручным дополнением заголовка. Все было бы хорошо, но на таблице из овер 40 тысяч записей Word тихо скончался. Увидел, что Access умеет экспортировать таблицу в xml файл, но не нашел, как мне прописать статичные данные, чтобы итоговый файл не просто выгружал секции данных, но и в нужном мне формате. Соответственно вопрос: 1. Возможно ли это? 2. Если да - пожалуйста, скажите как. 3. (в качестве факультатива) Может, есть другие более удобные способы? P.S. С xml знаком ооочень поверхностно, поэтому дражайше прошу избегать специфических определений и профессионального сленга. Заранее благодарю за помощь! _____________________ А что на самом деле хотел сказать "Frost_Imp" никто не знает, так как администрация форума попросила его быть вежливым. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2013, 14:55 |
|
Экспорт в xml по шаблону
|
|||
---|---|---|---|
#18+
А нельзя ли "статичные" данные поиметь в запросе, и экспортировать данные не таблицы, а запроса? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2013, 15:16 |
|
Экспорт в xml по шаблону
|
|||
---|---|---|---|
#18+
Можно, но я не понимаю, как это поможет делу ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2013, 16:53 |
|
Экспорт в xml по шаблону
|
|||
---|---|---|---|
#18+
Создать xml гораздо проще, чем прочитать. Это же обычный текстовый файл, его можно создать средствами VBA, или FSO, или ADODB.Stream. Создаете новый файл с заголовком, а затем в цикле по Recordset-у формируете и добавляете блоки. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2013, 18:34 |
|
Экспорт в xml по шаблону
|
|||
---|---|---|---|
#18+
Комрады, кому не сложно и если не лень - приведите пожалуйста пример, как мне создать одну секцию по шаблону, описанному выше и добавить в нее данные из полей таблицы. Буду очень благодарен! ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2013, 09:21 |
|
Экспорт в xml по шаблону
|
|||
---|---|---|---|
#18+
Frost_Imp, Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37.
Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2013, 11:38 |
|
Экспорт в xml по шаблону
|
|||
---|---|---|---|
#18+
qwerty112 , огромное! Прошелся по своему xml, вывел нужные поля и получил такие вопросы: 1. Как выводить значение нод (или параметров) не в "", а в '' ? 2. Можно ли сделать так, чтобы просмотрщики xml (тот же Notepad++) выводили параметры не строкой, а в столбец? (совсем неважный вопрос, так как касается исключительно восприятия файла) 3. Есть у меня 3 параметра одной ноды, выглядит это так: Код: xml 1. 2. 3. 4. 5.
Вопрос в том - как должна выглядеть таблица, откуда я буду забирать эти значения? (структура не моя, меня принуждают пользоваться такой) 4. qwerty112, вы меня расстреляете, но я не могу забрать эти данные (param...) из таблицы, знаний маловато. Перебрал кучу примеров из интернета, но для непонимающего замена одних строк кода на другие мало чем помогает. Подскажите (да, действительно звучит как "сделайте за меня", но я в безвыходной ситуации), как это сделать. Насколько я понимаю, нужно знать имя таблицы, как-то к ней подключиться и брать записи по циклу, пока они не кончатся. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2013, 12:39 |
|
Экспорт в xml по шаблону
|
|||
---|---|---|---|
#18+
Frost_Imp1. Как выводить значение нод (или параметров) атрибутов не в "", а в '' ? честно говоря - не знаю, есть ли такая "настройка" в Msxml2.DOMDocument НО знаю точно, что хмл-парсёру, какой из этих ограничителей будет использоватся - "по барабану" вот, например, IE всё равно, выводит его как " (рис.) так что если это "критично", я ничего "умнее" strTemp = Replace(xmlParser.XML, """", "'") и не предложу ... Frost_Imp2. Можно ли сделать так, чтобы просмотрщики xml (тот же Notepad++) выводили параметры не строкой, а в столбец? (совсем неважный вопрос, так как касается исключительно восприятия файла) через IE можно просматривать, ... или Визуал Студию, если есть... там будет выводится отформатированный Frost_Imp3. Есть у меня 3 параметра одной ноды, выглядит это так: Код: xml 1. 2. 3. 4. 5.
Вопрос в том - как должна выглядеть таблица, откуда я буду забирать эти значения? (структура не моя, меня принуждают пользоваться такой) нуу, иерархический хмл, значит у тебя это - нормально, так обычно и есть например, у одного client - несколько offer если всё в одной таблице, тогда нужно выборку рекордсета отсортировать по client и вывод нужного "блока" - делать пока его "иерархический родитель" неизменится Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
если эти "составляющие" иерархии - в разных таблицах - то ещё проще, - открываешь на всех таб. рекордсеты, - идёшь по "главному" (client) и для каждого client_id - фильтруешь и выводишь offer Frost_Imp4. ... Подскажите (да, действительно звучит как "сделайте за меня", но я в безвыходной ситуации), как это сделать. Насколько я понимаю, нужно знать имя таблицы, как-то к ней подключиться и брать записи по циклу, пока они не кончатся. дык, "не вопрос" приведи 5-10 строк из реальной структуры данных и какой результат на этих данных хочешь получить имён/паролей/явок - не нужно, это всё замени на какую-нибудь "лабуду" выложишь в mdb - будет ещё лучше ... ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2013, 13:46 |
|
Экспорт в xml по шаблону
|
|||
---|---|---|---|
#18+
Приложил файлик. Есть нужная структура, немного данных, во втором модуле мои попытки все это нарисовать. Формат выдаваемого xml настроен максимально ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2013, 16:21 |
|
Экспорт в xml по шаблону
|
|||
---|---|---|---|
#18+
По поводу третьего пункта Не делал, но чувствую, что ты меня не совсем верно понял. Вот полностью структура выходного файла ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2013, 16:33 |
|
Экспорт в xml по шаблону
|
|||
---|---|---|---|
#18+
Frost_ImpПриложил файлик. qwerty112выложишь в mdb - будет ещё лучше ... мне нечем открыть аццдб ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2013, 20:27 |
|
Экспорт в xml по шаблону
|
|||
---|---|---|---|
#18+
Frost_ImpПо поводу третьего пункта Не делал, но чувствую, что ты меня не совсем верно понял. Вот полностью структура выходного файла даа, понял я правильно, просто я жж "не ожидал" полей action_0 / action_1 / action_2 / action_3 :) по уму - это должно было быть в другой таблице ... и вообще, пример "неудачный" - я ж попросил пример хмл-я на данных файла ... вот что это за param41 или param46 ? откуда они берутся ? Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2013, 00:14 |
|
Экспорт в xml по шаблону
|
|||
---|---|---|---|
#18+
Дружище, спасибо! Разбираю твой файл, но не совсем понимаю полет твоих мыслей. Сначала ты создаешь два рекордсета Код: vbnet 1. 2.
а затем делаешь непонятную мне вещь Код: vbnet 1. 2.
В итоге в local rs3 : Name : "select * from tblDescr" : String и никак rs1 не связан с rs2. А почему нельзя создать рекордсет со связью tblOffers и tblDescr сразу? И оттуда уже забирать данные. Код: vbnet 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2013, 09:47 |
|
Экспорт в xml по шаблону
|
|||
---|---|---|---|
#18+
Поясню, почему не понимаю (тут, видимо, вмешиваются основы работы с рекордсетами. Итак, сначала разберем то, что ты сделал. Было две таблицы: tblOffers b tblDescr Каждый рекордсет смотрел в свою таблицу и забирал все данные Код: vbnet 1. 2.
После этого я несколько пересмотрел структуры таблиц (какие-то вещи из статических превратились в динамические и часть полей перекочевало из одной таблицы в другую) и у меня все умерло потому что: -Самую первую субноду Set subNode1 = rootNode.appendChild(xmlParser.createElement("client")) subNode1.setAttribute "id", rs1.fields("client_id") ты создаешь, глядя в rs1, где еще не применены никакие фильтры. Но мне нужно (предварительно ограничив выборку конкретным значением offer_id) чтобы client_id брался не первый попавшийся, а уже после применения фильтра, то есть из rs3. Но оттуда значение, почему-то не берется, хотя client_id присутствует. Код: vbnet 1. 2. 3. 4. 5. 6. 7.
Ругается "Элемент не обнаружен в данном семействе. Если я меняю обратно на Код: vbnet 1.
естественно, client_id возвращается, но без учета фильтра. Где прокол? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2013, 11:07 |
|
Экспорт в xml по шаблону
|
|||
---|---|---|---|
#18+
Не понимаю.... Решил отказаться от Join совсем - я просто фильтрую оба рекордсета по нужному полю. Из первого записи берутся, причем правильно (с учетом выборки), из второго - нет Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2013, 11:48 |
|
Экспорт в xml по шаблону
|
|||
---|---|---|---|
#18+
Frost_Impа затем делаешь непонятную мне вещь Код: vbnet 1. 2.
в rs2 - вся таб.tblDescr rs3 - открывается на основе rs2 с фильтром по rs1.Fields("offer_id") Frost_ImpА почему нельзя создать рекордсет со связью tblOffers и tblDescr сразу? И оттуда уже забирать данные. Код: vbnet 1. 2.
в данном, конкретном случае - может и можно, но в целом, структурно, в хмл-е полагается, что client связан с offer как "один ко многим" ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2013, 12:50 |
|
Экспорт в xml по шаблону
|
|||
---|---|---|---|
#18+
qwerty112, в итоге, как и говорил - делал без связи по условию, которое сразу подставлял в селект рекордсета. Потом подумаю, как это условие передавать в виде переменной и забирать откуда-нибудь из форму. Причесал на 90%, ругань на тип была по причине пустого поля. Заполнил - и все взлетело ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2013, 14:04 |
|
Экспорт в xml по шаблону
|
|||
---|---|---|---|
#18+
Знатоки xml, ау! В продолжение истории... В общем^ 1. Значение поля, из которого берутся данные, Код: xml 1.
2. В файл попадает это Код: xml 1.
3. Парсер ругается на строку ОШИБКА #6260: Проверка типа данных завершилась неудачей для атрибута, type, со значением: 'later'>Позже< 4. Должно получиться это Код: xml 1.
Вижу, что ограничителем данных у меня выступают двойные кавычки. В других местах ругани нет, только здесь. Подскажите, гуру, что исправить. Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2013, 09:59 |
|
Экспорт в xml по шаблону
|
|||
---|---|---|---|
#18+
И еще один вопрос сразу: есть у меня поле со значением true но в xml попадает значение T rue то есть с большой буквы. А это важно, нужно с маленькой. Остальные текстовые значения переносятся без изменений. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2013, 13:52 |
|
Экспорт в xml по шаблону
|
|||
---|---|---|---|
#18+
Комрады, прошу помочь ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2013, 11:14 |
|
Экспорт в xml по шаблону
|
|||
---|---|---|---|
#18+
Frost_ImpЗнатоки xml, ау! В продолжение истории... В общем^ 1. Значение поля, из которого берутся данные, Код: xml 1.
2. В файл попадает это Код: xml 1.
это надо понимать так, что ты НЕ создаешь файл через MSXML2.DOMDocument, а "клеиш" его как простой текстовый файл, так ? с DOMDocument, "В файл попадает это": Код: vbnet 1.
и никакой ошибки, разумеется - нет, хотя и полученный хмл, отличается от того, что "планировалось" ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2013, 11:29 |
|
Экспорт в xml по шаблону
|
|||
---|---|---|---|
#18+
qwerty112с DOMDocument, "В файл попадает это": Код: vbnet 1.
и никакой ошибки, разумеется - нет, хотя и полученный хмл, отличается от того, что "планировалось" форум исправляет &_g_t_; и &_l_t_; на > и < )) Код: vbnet 1.
читать без подчеркиваний ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2013, 11:37 |
|
Экспорт в xml по шаблону
|
|||
---|---|---|---|
#18+
qwerty112 , дружище, наверное нужно перефразировать. Мне нужно получить конструкцию: Код: xml 1. 2. 3.
Формируется этот кусок предложенным тобой кодом Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
Что мне нужно хранить в таблице (учитывая, что может меняться текст "интересно", "неинтересно" и т.д., чтобы получалось то, что мне нужно? Возможно, нужно изменить код... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2013, 08:51 |
|
Экспорт в xml по шаблону
|
|||
---|---|---|---|
#18+
Frost_ImpЧто мне нужно хранить в таблице (учитывая, что может меняться текст "интересно", "неинтересно" и т.д., чтобы получалось то, что мне нужно? Возможно, нужно изменить код... вот всё выделенное <action id='1' type='interest'>интересно</action> есть данные, которые нужно где-то хранить по уму - в отдельной табличке, которая связанная 1:М с tblOffers НЕ по уму - ещё добавить по одному полю в tblOffers, для каждого action action_0_engaction_0_rusaction_1_engaction_1_rus...laterпозжеinterestинтересно... и в коде так Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2013, 10:03 |
|
|
start [/forum/topic.php?fid=45&msg=38374250&tid=1609968]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
139ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 241ms |
0 / 0 |