用代码获取SharePoint站点中InfoPath表单的数据

简介:
如果使用InfoPath作为企业流程数据输入客户端,那么如何使用代码访问保存于SharePoint表单库中的InfoPath表单的内容,是必需知道的。

总结来说,要点如下:

1、获取InfoPath表单所对应的SPFile对象。这个不再详述,不管是表单库的事件处理代码,抑或外部的应用程序,都需要首先得到代表InfoPath表单的SPFile对象。

2、将InfoPath表单的所有内容读入一个Stream中:
Stream stream= new MemoryStream(file.OpenBinary());

3、通过XML接口访问表单数据。通过一个Reader把Stream里面的内容以文本的形式读出来,就得到了包含了表单所有数据的XML文档的字符串表示形式。通过XmlDocument、XPath等接口,都能一步步的检索到自己需要的信息。

4、如果你实在讨厌通过XML接口去和一堆XML数据打交道,那么就用下面这个更加OO的办法。
首先,把InfoPath的原始.xsn文件解压开,把里面描述表单数据架构的.xsd文件找到,然后通过.Net Framework带的xsd.exe命令行工具,通过这个.xsd文件得到一个proxy类,然后在项目中使用这个类。比如一个工作单表单,我们得到了一个WorkItem类:
WorkItem workItem = new XmlSerializer(typeof(WorkItem)).Deserialize(stream) as WorkItem;
就把InfoPath表单的内容反序列化成了一个对象,然后直接访问这个对象的属性就行了。




本文转自 kaneb0y 51CTO博客,原文链接:http://blog.51cto.com/kaneboy/281332,如需转载请自行联系原作者
目录
相关文章
|
数据安全/隐私保护
SharePoint开发——利用CSOM逐级获取O365中SharePoint网站的List内容
博客地址:http://blog.csdn.net/FoxDave 本文介绍如何利用SharePoint客户端对象模型(.NET)逐级获取Office 365网站中List的内容,仅仅是示例,没有讲究太多东西。
820 0
|
存储 测试技术
SharePoint自动化系列——Site/Web/List级别的导航菜单
转载请注明出自天外归云的博客园:http://www.cnblogs.com/LanTianYou/ 需求:在不同的测试用例中,对脚本中不确定的因素需要和用户交互来确定,比如选择哪个site,选择哪个web,选择哪个list。
810 0
|
数据库 C++
SharePoint 2010 站点附加数据升级到SP2013
  首先,去SharePoint 2010的数据库服务器上,找到站点的数据库,备份、还原到SharePoint 2013环境中;   如果不知道数据库服务器是哪台,可以通过服务器场上的服务器查看;   如果不知道是哪个数据库的话,可以到管理内容数据库查看;   备份SharePoint...
1219 0