2010-10-28 1 views
1

Мне нужно преобразовать данные XML в ADO RecordSet. Я могу построить XML-формат ADO Persistant для преобразования, но я не уверен, почему одна строка в моем XML игнорируется. Полученный окончательный набор записей имеет EOF и BOF как истинные, а RecordCount - 0, но это неверно, поскольку мой XML содержит в одной строке, как в XMl ниже. Любая идея, что я могу ошибаться в этом, пожалуйста?ADO Постоянный XML to RecordSet Задача

<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='AddressObject' content='eltOnly'> 
     <s:AttributeType name='ADDRESSKEY' rs:number='1' /> 
     <s:AttributeType name='ADDRESS_1' rs:number='2' /> 
     <s:AttributeType name='ADDRESS_2' rs:number='3' /> 
     <s:AttributeType name='ADDRESS_3' rs:number='4' /> 
     <s:AttributeType name='CITY' rs:number='5' /> 
     <s:AttributeType name='STATE' rs:number='6' /> 
     <s:AttributeType name='ZIP' rs:number='7' /> 
     <s:AttributeType name='FULLADDRESS' rs:number='8' /> 
     <s:AttributeType name='COUNTRY' rs:number='9' /> 
     <s:AttributeType name='FULLADDRESS2' rs:number='10' /> 
     <s:AttributeType name='COUNTY' rs:number='11' /> 
     <s:AttributeType name='BADADDRESS' rs:number='12' /> 
     <s:AttributeType name='VALIDADDRESS' rs:number='13' /> 
     <s:AttributeType name='OWNERID' rs:number='14' /> 
     <s:extends type='rs:rowbase'/> 
    </s:ElementType> 
</s:Schema> 
<rs:data> 
    <z:row ADDRESSKEY='2bbcd09f-89c7-1242-93bb-ce23e832ab94' ADDRESS_1='123 Broad Lane' ADDRESS_2='' ADDRESS_3='' CITY='Forest Lake' STATE='TX' ZIP='78133' FULLADDRESS='Canyon Lake, TX 78123' COUNTRY='UNITED STATES' FULLADDRESS2='' COUNTY='Lola' BADADDRESS='0' VALIDADDRESS='0' OWNERID='001049231' /> 
</rs:data> 
</xml> 

Вот пример правильного ADO Persistent формат 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' rs:CommandTimeout='30'> 
<s:AttributeType name='name' rs:number='1' > 
<s:datatype dt:type='string' dt:maxLength='10' /> 
</s:AttributeType> 
<s:AttributeType name='bin' rs:number='2' > 
<s:datatype dt:type='bin.hex' dt:maxLength='8' /> 
</s:AttributeType> 
<s:AttributeType name='GUID' rs:number='3'> 
<s:datatype dt:type='uuid' dt:maxLength='16' /> 
</s:AttributeType> 
<s:AttributeType name='date' rs:number='4' > 
<s:datatype dt:type='dateTime' dt:maxLength='16' 
rs:scale='0' rs:precision='16' /> 
</s:AttributeType> 
<s:AttributeType name='float' rs:number='6' > 
<s:datatype dt:type='float' dt:maxLength='8'rs:precision='15' /> 
</s:AttributeType> 
<s:AttributeType name='flag' rs:number='7' > 
<s:datatype dt:type='boolean' dt:maxLength='2' /> 
</s:AttributeType> 
</s:ElementType> 
</s:Schema> 
<rs:data> 
<z:row name='sample1' bin='00000000499602d2' 
GUID='{8AC68D3D-8A09-4403-8860-D0E494BBE894}' 
date='2008-01-25T13:04:00Z' 
float='3.1415926535800001' flag='0'/> 
<z:row name='sample2' date='2008-02-13T18:49:00Z' flag='1'/> 
</rs:data> 
</xml> 

С Ссылка

http://msdn.microsoft.com/en-us/library/cc313112(v=office.12).aspx

+0

ли это на самом деле есть XML как элемент верхнего уровня? Я думал, что имена, начинающиеся с «xml», были зарезервированы. – LarsH

+0

В этом случае тег верхнего уровня xml следует за образцом из приведенной выше ссылки. – Kobojunkie

+0

Спасибо за рабочий пример. Но ссылка, которую вы предоставляете, не имеет этого примера. Более того, официальная спецификация типа отсюда (http://www.w3.org/TR/1998/NOTE-XML-data/#SpecificDatatypes) не имеет формата даты «dateTime», а только «dateTime.iso8601» и «dateTime .iso8601tz ". Это меня смущает. –

ответ

0

Попробуйте изменить эту строку

<s:ElementType name='AddressObject' content='eltOnly'> 

в

<s:ElementType name='row' content='eltOnly'> 
+0

Спасибо целую кучу! Вот и все! – Kobojunkie

0

Если это действительно имеет <xml> как элемент верхнего уровня, попробуйте переименование этого элемента. Имена, начинающиеся с «xml», не допускаются, поэтому ваш XML не является корректным. Процессор XML, достойный его соли, отклонит его.

 Смежные вопросы

  • Нет связанных вопросов^_^