|
|
|
Builder c++ 6 + XML Data Binding и интерфейсы
|
|||
|---|---|---|---|
|
#18+
Пока не знаю что конкретно спрашивать, просто обрисую проблему. Работал с XML через XML Data Binding, создавал классы/интерфейсы по XML файлу и особо не заморачивался как оно работает. Понадобилось использовать XML Data Binding со схемами xsd и тут случилась подстава. То, что билдер не смог переварить xsd-файл это я пережил. Засада случилась в самой схеме. Рабочий XML файл выглядит приблизительно так: Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. А xsd-схема начинается от ConfirmTicket: Код: xml 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. И вот начальный кусок XML меня ставит в тупик. Сейчас пытаюсь делать так, - генерить по xsd схеме и подставлять туда кусок XML из файла начиная с ConfirmTicket. Но пока что-то не получается. 2 способ это к каждой схеме дописывать недостающий начальный кусок, но это несколько геморно и странно. 3 способ, в каждый сгенеренный файл прописывать недостающий кусок кода, но сдается мне, что это еще более проблемный и странный вариант. Собственно вопрос, правильная ли моя идея с " генерить по xsd схеме и подставлять туда кусок XML из файла начиная с ConfirmTicket." и почему у меня не работает ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2016, 18:30:04 |
|
||
|
Builder c++ 6 + XML Data Binding и интерфейсы
|
|||
|---|---|---|---|
|
#18+
didgikА xsd-схема начинается от ConfirmTicket:Нет. Схема описывает элементы в пространстве именdidgik Код: xml 1. а именно Identy и Header. Описание Header полностью соответствует XML. Сам же XML имеет корневой элемент Documents в пространстве именdidgik Код: xml 1. Вот и ищите схему для этого пространства имен. А эта схема будет внутри включать в себя приведенную схему при помощи такой конструкции Код: xml 1. Вот именно на эту схему и нужно натравить парсер XML Data Binding и молиться, чтобы он понимал импорты и пространства имен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2016, 19:17:12 |
|
||
|
Builder c++ 6 + XML Data Binding и интерфейсы
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, спасиб, все получилось! пространства имен к сожалению он не понимает, даже от 10 версии, но всеж меньше ручной работы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2016, 20:15:15 |
|
||
|
Builder c++ 6 + XML Data Binding и интерфейсы
|
|||
|---|---|---|---|
|
#18+
А подскажите еще такую вещь. XML Data Binding формирует код приблизительно такого вида: Код: plaintext 1. 2. 3. 4. но в таком виде не поддерживаться пространства имен и приходится переписывать на: Код: plaintext 1. 2. 3. Но в таком виде пропадет фишка с автосозданием ноды при формировании XML файла. Как бы это побороть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2016, 23:02:44 |
|
||
|
Builder c++ 6 + XML Data Binding и интерфейсы
|
|||
|---|---|---|---|
|
#18+
didgikКак бы это побороть?Как то так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2016, 12:37:17 |
|
||
|
Builder c++ 6 + XML Data Binding и интерфейсы
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, да, я приблизительно так и думал, просто надеялся, может есть какой способ указывать пространство имен для текущего массива Nodes, т.е. как то упростить ручную работу по изменению автосгенерированого кода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2016, 17:52:05 |
|
||
|
Builder c++ 6 + XML Data Binding и интерфейсы
|
|||
|---|---|---|---|
|
#18+
didgikкак то упростить ручную работу по изменению автосгенерированого кода.Replace All GetChildNodes()->Nodes to Nodes свойство Nodes определить как приватное свойство класса TConfirmTicketType_ctc или родителя ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2016, 20:44:05 |
|
||
|
Builder c++ 6 + XML Data Binding и интерфейсы
|
|||
|---|---|---|---|
|
#18+
Привет. А подскажите еще ситуацию. Есть вот такой XSD: это CommonV3: Код: xml 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. и сам ReplyRestBCode Код: xml 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. Проблему выдал <xs:element name="MarkInfo" type="ce:AMCforDocType" nillable="false" minOccurs="0" maxOccurs="unbounded"/> XML Data Binding разродился приблизительно нижеследующим: Код: plaintext 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. И теперь копилятор ругается на две строки на первую желтую: [C++ Error] WB_DOC_SINGLE_01.h(5962): E2462 'virtual' can only be used with non-template member functions [C++ Error] WB_DOC_SINGLE_01.h(5962): E2344 Earlier declaration of 'IReplyRestBCode_rsbc::_di_IAMCforDocType_cevList' на вторую: [C++ Error] WB_DOC_SINGLE_01.h(5968): E2238 Multiple declaration for 'IReplyRestBCode_rsbc::_di_IAMCforDocType_cevList' Собственно понятно, он не прописал в начале в интерфейсах типа: __interface Iboxtype_cevList; typedef System::DelphiInterface<Iboxtype_cevList> _di_Iboxtype_cevList; вот _di_Iboxtype_cevList прописал, а _di_IAMCforDocType_cevList нет. И в описании класса выделил только private: _di_IAMCforDocType_cevList FMarkInfo; больше никаких списков так не оформлял. Так как с XML и интерфейсами у меня в голове туго, я никак не соображу, глюк это XML Data Binding или так и должно быть. И как побороть эту проблему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2017, 13:18:33 |
|
||
|
Builder c++ 6 + XML Data Binding и интерфейсы
|
|||
|---|---|---|---|
|
#18+
Народ, есть какие нибудь идеи? А то я так и не соображу пока что делать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2017, 02:10:59 |
|
||
|
Builder c++ 6 + XML Data Binding и интерфейсы
|
|||
|---|---|---|---|
|
#18+
Решил _di_IAMCforDocType_cevList ручками оформить по аналогии с _di_IAMCforDocType_cev так это глюкало выдало ошибку: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2017, 01:36:17 |
|
||
|
Builder c++ 6 + XML Data Binding и интерфейсы
|
|||
|---|---|---|---|
|
#18+
didgik, с 6-й стройкой практически не работал и насколько хорошо там работает ulink на практике не в курсе (хотя не вижу препятствий) но начиная с 2006-й полностью отказался от родного линкера ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2017, 11:44:34 |
|
||
|
Builder c++ 6 + XML Data Binding и интерфейсы
|
|||
|---|---|---|---|
|
#18+
xe2 выдает ошибку Код: pascal 1. 2. а берлин линкует уже нормально. Правда не проверял, работает ли ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2017, 13:58:51 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39267008&tid=2041583]: |
0ms |
get settings: |
5ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
163ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
33ms |
get tp. blocked users: |
1ms |
| others: | 198ms |
| total: | 421ms |

| 0 / 0 |
