天天看點

用代碼擷取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,如需轉載請自行聯系原作者