点击或拖拽改变大小

Functions.XmlToCursor 方法

X#
-- todo --
将XML文本转换为X#游标或表。

命名空间:  XSharp.VFP
程序集:  XSharp.VFP (在 XSharp.VFP.dll 中) 版本:2.22 GA
语法
 FUNCTION XmlToCursor(
	eExpression,
	cCursorName,
	nFlags
) AS LONG CLIPPER
查看代码

参数

eExpression (Optional)
类型:__Usual
指定XML文本或评估为有效XML数据的表达式。eExpression参数可以是X#内存变量、 备注字段内容、HTTP请求的返回、SOAP方法调用的返回结果、来自XMLDOM的XML或ADO流。
备注 备注:
如果未找到eExpression或eExpression无法解析为有效的XML,XMLTOCURSOR()将生成错误。
cCursorName (Optional)
类型:__Usual
指定用于存储结果的游标名称,并在当前工作区创建游标。
如果游标名称已存在或已打开,X#将关闭该游标并在未使用的工作区创建一个新游标。 如果省略cCursorName或传递空字符串(""),X#将创建名为"XMLRESULT"的游标来返回结果。
如果cCursorName包含数据且nFlags设置为8192,X#将从XML文件导入的数据附加到现有表或游标。 表或游标必须打开或正在使用。如果cCursorName为空字符串(""),X#将XML导入到当前工作区中打开的表或游标。
nFlags (Optional)
类型:__Usual
指定如何在XMLTOCURSOR()中处理XMLSource eExpression。备注部分的表格描述了nFlags的值。

返回值

类型:Int32
数值数据类型。XMLTOCURSOR()返回创建的记录数。
备注
您可以将XMLTOCURSOR()与X#的OLE DB提供程序一起使用。但是,_VFPVFPXMLProgID属性不 受支持,因为OLE DB提供程序不支持_VFP系统变量。
要将X# OLE DB提供程序与XMLTOCURSOR()一起使用,您必须在安装OLE DB提供程序的计算机上安装MSXML 3.0。

对于长度超过约160列的记录,XMLTOCURSOR()会生成语法错误。导致错误的确切列数取决于列名的长度。

从XML文档创建游标时,XMLTOCURSOR()不使用Varchar类型。但是,XMLTOCURSOR() 支持将数据附加到具有Varchar字段的现有游标中。
在追加模式下调用XMLTOCURSOR()时,如果没有XML元素名称与任何表或游标列匹配,X#会添加一个空行。

XMLTOCURSOR()Decimal数据类型转换为Numeric 20,19(宽度,精度)。在X# 8.0之前的版本中, Decimal映射到Numeric 8,0。

数值溢出条件XMLTOCURSOR()导入包含X#数值溢出条件的XML数据,例如, 在数值或整数值的位置使用"*******"。如果提供了架构,X#会在结果游标中创建正确的数据类型,但 将溢出从星号(*)字符更改为0.0或0值。因此,XMLTOCURSOR()使用的XML解析器不会因 存储在小数类型元素中的字符值而引发错误。
有关将XML转换为X#数据的更多信息,请参阅"在XML和X#数据之间转换"。
nFlags描述
00000(默认)将第一个参数视为包含XML数据的字符串。
40100保留数据中的空白,并覆盖XML数据的xml:space属性。
51201000000000 指定第一个参数(eExpression或cXMLFile)是包含XML数据文件名称和路径的字符串。
102410000000000 NOCPTRANS – 在结果游标中创建带有NOCPTRANS选项的CharacterMemo字段,并将传入元素中的文本或 XML值以未翻译的、逐字节的方式插入到CharacterMemo字段中。
当与标志1024一起使用时,XMLTOCURSOR( )返回一个用尾随空格填充的字符串,长度等于实际字符串的两倍。
2048100000000000 当导入的架构包含具有限制(或分面)的XML架构定义(XSD)架构时使用, totalDigits="19"和fractionDigits="4"。
XSD数据类型值在结果游标中映射为X# Currency数据类型。
40961000000000000 禁用base64解码。
在X#中,base64编码仅用于编码二进制数据。
81921100000000 指定cCursorName是现有表或游标的名称或别名,并将指定XML文件中的数据导入到 现有表或预定义游标中。
如果cCursorName包含数据,则从XML文件导入的数据将附加到现有数据。 如果cCursorName为空字符串(""),则XML文件中的数据将导入到当前工作区的表或游标中。
当XML架构不可用或不实用时,将nFlags设置为8192可能很有用。
327680x8000表示应使用代码页。
655360x10000将XML Char字段映射到原生Fox Varchar字段。如果未指定,XML Char字段将映射到Fox Character字段。
1310720x20000 将XML base64Binary字段映射到原生Fox Varbinary字段(如果小于255字节)或Blob字段(如果大于此长度)。 如果未指定,XML base64Binary字段将映射到Fox Memo字段。
使用标志8192时,请注意以下几点:
    下表描述了将nFlags设置为8192时的数据类型匹配限制。
    X#数据类型行为
    CharacterCharacter (Binary)、MemoMemo (Binary) 接受任何数据,但截断超出Character列长度的任何数据。
    Currency 接受Currency类型接受范围内的数值数据,但截断此范围之外的数字。
    Date 接受XML格式的日期和dateTime值。
    X#将XML日期和dateTime格式转换为相应的X#日期。 X#仅保留XML日期或dateTime值的M/D/Y部分。
    DateTime X#将XML日期和dateTime格式转换为相应的X#日期,并丢弃超出X#支持范围的精度。
    Double 接受Double类型接受范围内的数值数据,但截断此范围之外的数字。
    Integer 接受Integer类型接受范围内的整数数据,但截断此范围之外的数字。
    Logical接受值True、.T.、1、False、.F.和0。
    NumericFloat 接受有或没有小数的数值数据,但根据X#规则截断这些类型接受范围之外的数字 或替换为数值溢出指示符("*************")。
参见