最近一直和infopath表单打交道,碰到的问题也比较多,刚刚就碰到一个在程序中修改infopath表单中域的内容时出错的问题,写出来与大家共享一下,我想这个问题,可能玩infopath的话,迟早会碰上的吧。
具体表现就是在代码中对一些值类型的域进行更改的时候,代码报错,出错信息:"Schema validation found non-data type errors."
小弟对xml schema真的不是很了解,所以找了半天,最后总算在infopath team blog上找到标准答案
文章地址:http://blogs.msdn.com/infopath/archive/2006/11/28/the-xsi-nil-attribute.aspx

xsi:nil属性

你是否曾经在程序中设置域值时碰到schema valiadation错误?很多时候这个错误的原因是节点定义了“nillable”属性. Nillable属性是一个特殊的属性,它能出现在一个XML schema的 xsd:elment中.如果一个元素定义了xsi:nil属性,意味着这个元素被定义了,但是没有值,因此它是没有内容的。

然而,如果你试图在程序中给一个定义了nillable属性的节点设置值,你会得到一个错误信息:“Schema validation found non-data type errors.”。你可能会发现nillable属性常被定义在下面几种数据类型上:

  • Whole Number (integer)
  • Decimal (double)
  • Date (date)
  • Time (time)
  • Date and Time (dateTime)

要解决这个问题,你的代码需要先检测nil属性是否被定义了。如果定义了,那需要在给节点设置值之前移除这个属性。下面这段简单的程序使用一个XpathNavigator类,检查节点的node是否有nil属性。如果存在则删除掉。

public void DeleteNil(XPathNavigator node)
{
if (node.MoveToAttribute("nil", "http://www.w3.org/2001/XMLSchema-instance"))
      node.DeleteSelf();
}

上面这段代码是通用的,你能很简单的调用这段代码在你需要编程改变一个域的值之前。下面是一个例子,这段代码被一个按钮的click事件调用。

//Create a Navigator object for the main data source
// 为主数据源创建一个Navigator对象
XPathNavigator xn = this.MainDataSource.CreateNavigator();

//Create a navigator object for the field (node) 
//where we want to set the current date value
// 为你要设置当前日期值的一个域(节点)创建一个navigator对象
XPathNavigator xnfield1 = xn.SelectSingleNode("/my:myFields/my:field1", this.NamespaceManager);

//Check if the "nil" attribute exists on this node
// 检查节点是否存在 “nil”属性
DeleteNil(xnfield1);

//Create a new dateTime object for the current date
// 创建一个包含当前日期的新的dateTime对象
DateTime curDate = new DateTime(DateTime.Today.Year, DateTime.Today.Month, DateTime.Today.Day);

//Set the value of field1 to the current date in the 
//correct format: yyyy-mm-dd
// 设置field1的值为使用”yyyy-mm-dd”格式的当前日期
xnfield1.SetValue(curDate.GetDateTimeFormats().GetValue(5).ToString());

转载于:https://www.cnblogs.com/pengyuan512/archive/2008/06/24/1228947.html

在程序中设置infopath中的整型等域值时出错解决方法相关推荐

  1. MVC中提示错误:从客户端中检测到有潜在危险的 Request.Form 值的详细解决方法...

    今天往MVC中加入了一个富文本编辑框,在提交信息的时候报了如下的错误:从客户端(Content="<EM ><STRONG ><U >这是测试这...&q ...

  2. WPF中设置了WindowStyle=None后,窗口仍然有边框的解决方法

    1. 设置了窗体的WindowStyle="None",窗口还是右边框,如下图: 2. 这是因为窗体默认是可以改变大小的,所以需要修改ResizeMode的值 ResizeMode ...

  3. 本题要求编写程序,对输入的一个整数,从高位开始逐位分割并输出它的各位数字。输入格式:输入在一行中给出一个长整型范围内的非负整数。输出格式:从高位开始逐位输出该整数的各位数字,每个数字后面有一个空格

    本题要求编写程序,对输入的一个整数,从高位开始逐位分割并输出它的各位数字.输入格式:输入在一行中给出一个长整型范围内的非负整数.输出格式:从高位开始逐位输出该整数的各位数字,每个数字后面有一个空格 1 ...

  4. char怎么比较_为什么阿里巴巴Java开发手册中强制要求整型包装类对象值用 equals 方法比较?...

    在阅读<阿里巴巴Java开发手册>时,发现有一条关于整型包装类对象之间值比较的规约,具体内容如下: 这条建议非常值得大家关注, 而且该问题在 Java 面试中十分常见. 还需要思考以下几个 ...

  5. python字典怎么设置_在python中设置字典中的属性

    在python中设置字典中的属性 是否可以在python中从字典创建一个对象,使每个键都是该对象的属性? 像这样的东西: d = { 'name': 'Oscar', 'lastName': 'Rey ...

  6. VS2017 启动调试出现 无法启动程序“http://localhost:15613” 操作在当前状态中是非法的。 同时附加进程也是错误的解决方法

    VS2017 启动调试出现 无法启动程序"http://localhost:15613" 操作在当前状态中是非法的. 同时附加进程也是错误的解决方法 参考文章: (1)VS2017 ...

  7. C#语言中提供了枚举和整型之间的强制转换功能(SelectItem)

    [csharp] view plain copy   <span style="font-family: Arial, Helvetica, sans-serif;"> ...

  8. Word论文中设置正文中的引用参考文献 按住Ctrl键+单击鼠标右键 实现跳转到论文参考文献的对应位置

    Word论文中设置正文中的引用参考文献 按住Ctrl键+单击鼠标右键 实现跳转到论文参考文献的对应位置 首先要确保文中参考文献排版是插入的编号,而不是自己手敲的[1][2]-- 在正文要引用参考文献的 ...

  9. 检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件时失败解决方法

    最近在处理一个项目时使用到了在word中写入信息的功能,由于系统原来就支持在线打印功能,使用了PageOffice,于是就研究了一下PageOffice,发现Pageoffice不能满足自己的功能(或 ...

最新文章

  1. 011_SpringBoot视图层技术thymeleaf-日期格式化
  2. tarjan算法_【朝夕的ACM笔记】树上问题-最近公共祖先-倍增算法
  3. Tomcat学习笔记02【Tomcat部署项目】
  4. Git检出远程库的分支等相关操作
  5. 进程调度的时机,切换与过程,方式
  6. Eclipse自动部署项目到Tomcat的webapps下的有效方法
  7. 谷歌大脑小姐姐亲授:如何应聘成功羡煞旁人的AI工程师岗位
  8. 记录一次手机联系人整理(XML文件格式处理)
  9. 关于打印机状态的获取
  10. echarts最简单的南丁格尔玫瑰图+图例
  11. 【CAD算法】【计算机图形学】Coons Patch曲面生成程序(python/numpy实现)[2]
  12. java js hexmd5_JAVA与JS在MD5上问题
  13. 感应封盖机行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  14. 【Python气象绘图临摹】图像绘制(下):地理子图GeoAxes、xy轴设置、应用ncl色阶colormap、各标题、海岸线、添加文本、添加矩形框
  15. 计算机课教学进度,小学信息技术教学进度表.doc
  16. AIO 模拟量采集 电路
  17. javascript重要事件总结(onsubmit/onclick/onload/onfocus/onblur/onmouseover/onmouseout)
  18. 第八章 交互技术,8.1 VR电商购物(作者:宋五)
  19. C# winform中对gridcontrol查询的一些操作
  20. Vue + Django + PaddleOCR 实现一个在线OCR 识别网站,一键上传快速识别

热门文章

  1. Hadoop基础-Hdfs各个组件的运行原理介绍
  2. Java5线程并发库之LOCK(锁)CONDITION(条件)实现线程同步通信
  3. jetty部署多个web应用及将jetty配置成服务
  4. root用户登录mysql后新建用户提示1045错误
  5. android 学习随笔十六(广播 )
  6. 正则表达式30分钟入门教程(转)
  7. RHEL6.4 Keepalive+LVS(DR)部署文档
  8. Python: 使用装饰器“@”取得函数执行时间
  9. springboot集成环信sdk报错
  10. Flask项目--预防csrf攻击原理