【问题标题】:ADO Persistent XML to RecordSet ProblemADO 持久 XML 到 RecordSet 问题
【发布时间】:2012-04-14 04:28:16
【问题描述】:

我需要将我的 XML 数据转换为 ADO 记录集。我能够为转换构造 ADO Persistant XML 格式,但我不太清楚为什么我的 XML 中的单行被忽略。生成的最终记录集的 EOF 和 BOF 都为真,并且 RecordCount 为 0,但这是不正确的,因为我的 XML 确实包含一行,如下面的 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='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 持久 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

【问题讨论】:

  • 它真的有xml作为顶级元素吗?我认为以“xml”开头的名称是保留的。
  • 在这种情况下,xml 顶级标记遵循上面链接中的示例。
  • 感谢工作示例。但是您提供的链接没有此示例。此外,这里的官方类型规范(w3.org/TR/1998/NOTE-XML-data/#SpecificDatatypes)没有平面“dateTime”格式,只有“dateTime.iso8601”和“dateTime.iso8601tz”类型。这让我很困惑。
  • 在本例中,“rs:precision='15'”前应有一个空格。

标签: xml asp-classic vbscript ado


【解决方案1】:

尝试改变这一行

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

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

【讨论】:

  • 非常感谢!就是这样!
【解决方案2】:

如果它确实有&lt;xml&gt; 作为顶级元素,请尝试重命名该元素。不允许以“xml”开头的名称,因此您的 XML 格式不正确。一个称职的 XML 处理器会拒绝它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多