Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Обработка очень интеренсого по формату XML, [D7, WinXP]


Страницы:   1 2

D-Rulez ©   (2012-04-03 17:39:00) 

Здравствуйте. Помогите, пожалуйста, следующий xml обработать и через clientdataset в dbgrid отобразить данные.

XML файл очень интересного типа. Его не может обработать XML Mapper: Выдает ошибку на строке 69 из-за длины строки (это значение AtrName11=max8000).
Хотелось бы как-то обработать данный xml и значения атрибутов с AtrName1 по AtrName13 – отобразить в dbgrid.

Проблема еще и в том, что хотя и некоторые атрибуты описаны в схеме, но их значений может и не быть, как AtrName5, например, в этом случае их можно заменить пустым значением NULL.

Как и чем можно обработать данный xml файл? Может компонента есть, которая сможет такое проглотить?
Или хоты бы как-то получить сами значения, или отсутствие атрибутов по отдельности из z:row?

Пример самого xml:

<xml xmlns:s='uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882'
xmlns:dt='uuid:C2F41010-65B3-11d1-A29F-00AA00C14882'
xmlns:rs='urn:schemas-microsoft-com:rowset'
xmlns:z='#RowsetSchema'>
<s:Schema id='RowsetSchema'>
<s:ElementType name='row' content='eltOnly'>
 <s:AttributeType name='AtrName1' rs:number='1' rs:writeunknown='true'>
  <s:datatype dt:type='int' dt:maxLength='4' rs:precision='10'
   rs:fixedlength='true' rs:maybenull='false'/>
 </s:AttributeType>
 <s:AttributeType name='AtrName2' rs:number='2' rs:writeunknown='true'>
  <s:datatype dt:type='ui1' dt:maxLength='1' rs:precision='3'
   rs:fixedlength='true' rs:maybenull='false'/>
 </s:AttributeType>
 <s:AttributeType name='AtrName3' rs:number='3' rs:nullable='true'
   rs:writeunknown='true'>
  <s:datatype dt:type='string' rs:dbtype='str' dt:maxLength='128'/>
 </s:AttributeType>
 <s:AttributeType name='AtrName4' rs:number='4' rs:writeunknown='true'>
  <s:datatype dt:type='string' rs:dbtype='str' dt:maxLength='128'
   rs:maybenull='false'/>
 </s:AttributeType>
 <s:AttributeType name='AtrName5' rs:number='5' rs:nullable='true'
   rs:writeunknown='true'>
  <s:datatype dt:type='string' rs:dbtype='str' dt:maxLength='1024'/>
 </s:AttributeType>
 <s:AttributeType name='AtrName6' rs:number='6' rs:writeunknown='true'>
  <s:datatype dt:type='dateTime' rs:dbtype='timestamp'
   dt:maxLength='16' rs:scale='3' rs:precision='23' rs:fixedlength='true'
   rs:maybenull='false'/>
 </s:AttributeType>
 <s:AttributeType name='AtrName7' rs:number='7' rs:nullable='true'
   rs:writeunknown='true'>
  <s:datatype dt:type='dateTime' rs:dbtype='timestamp'
   dt:maxLength='16' rs:scale='3' rs:precision='23' rs:fixedlength='true'/>
 </s:AttributeType>
 <s:AttributeType name='AtrName8' rs:number='8'
   rs:nullable='true' rs:writeunknown='true'>
  <s:datatype dt:type='string' rs:dbtype='str' dt:maxLength='1024'/>
 </s:AttributeType>
 <s:AttributeType name='AtrName9' rs:number='9'
   rs:writeunknown='true'>
  <s:datatype dt:type='boolean' dt:maxLength='2' rs:fixedlength='true'
   rs:maybenull='false'/>
 </s:AttributeType>
 <s:AttributeType name='AtrName10' rs:number='10' rs:nullable='true'
   rs:writeunknown='true'>
  <s:datatype dt:type='int' dt:maxLength='4' rs:precision='10'
   rs:fixedlength='true'/>
 </s:AttributeType>
 <s:AttributeType name='AtrName11' rs:number='11' rs:nullable='true'
   rs:writeunknown='true'>
  <s:datatype dt:type='string' rs:dbtype='str' dt:maxLength='8000'/>
 </s:AttributeType>
 <s:AttributeType name='AtrName12' rs:number='12' rs:nullable='true'
   rs:writeunknown='true'>
  <s:datatype dt:type='string' rs:dbtype='str' dt:maxLength='8000'/>
 </s:AttributeType>
 <s:AttributeType name='AtrName13' rs:number='13' rs:nullable='true'
   rs:writeunknown='true'>
  <s:datatype dt:type='string' rs:dbtype='str' dt:maxLength='255'/>
 </s:AttributeType>
 <s:extends type='rs:rowbase'/>
</s:ElementType>
</s:Schema>
<rs:data>
<z:row AtrName1='11' AtrName2='2' AtrName3='someword1'
  AtrName4='' AtrName6='2011-10-15T16:01:24.463000000'
  AtrName8='sometext1' AtrName9='False' AtrName11='veryveryveryveryryveryveryveryveryvery, and=again=, =veryveryvery=, andveryveryveryvery=, ==andveyveryvery, andendveryLongStringHelpMePLEASE'/>
</rs:data>
</xml>


sniknik   (2012-04-03 20:02:00) [21]

вообще то это обычный ADO рекордсет, сохраненный как xml. значит и прочитать можно им же... без всяких преобразований.


brother   (2012-04-03 19:59:00) [22]

Что, не выходит Данила-мастер у тебя каменный цветок?
Нееее, нееее выхооодит(
зы. что именно делал? Код? Симптомы?)


D-Rulez   (2012-04-03 19:37:00) [23]

Не выходит. Датамаппер не берет атрибуты.


CRLF   (2012-04-03 19:00:00) [24]

Удали <rs:data/>, скорми маперу, верни данные, работай.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо