将整个InfoPath表单传递给Web服务(不提交)

时间:2011-05-10 10:36:09

标签: web-services infopath2010

我有一个InfoPath 2010表单,用于查询Web服务。 Web服务期望整个InfoPath表单作为XML字符串参数。用XML字符串表示格式为

的字符串
<my:myFields xmlns:my=...>
    <my:Name>UserName</my:Name>
    ...
</my:myFields>   

然后,Web服务将处理该字符串并将结果返回到InfoPath表单。

我试图传递根元素“。”,但是在Web服务端,我收到的格式仅为\ r \ n和\ t \ t。关于如何传递XML标签和值的任何想法。

1 个答案:

答案 0 :(得分:2)

我通过将列表名称和表单名称传递给Web服务找到了一种解决方法。然后,在SharePoint中托管的Web服务将获取表单的XML。

以下是供参考的代码:

public class InfoPathHelper
{
    private string _listName;
    private string _fileUrl;

    public InfoPathHelper(string listName, string fileName)
    {
        _listName = listName;
        _fileUrl = string.Format("{0}/{1}.xml", listName, fileName); 
    }

    public string GetFormXml()
    {
        using (SPWeb web = SPContext.Current.Web)
        {
            SPList lib = web.Lists[_listName];
            SPFile file = lib.RootFolder.Files[_fileUrl];
            XmlDocument doc = new XmlDocument();
            doc.Load(file.OpenBinaryStream());
            return doc.OuterXml;
        }
    }
}