C# 以编程方式打开infopath模板文件(XSN)

C# 以编程方式打开infopath模板文件(XSN),c#,sharepoint-2010,infopath2010,C#,Sharepoint 2010,Infopath2010,我在Sharepoint 2010中有一个文档库,并存储了infopath 2010表单模板(XSN文件)。是否有一种方法可以使用SharePoint对象模型或Infopath 2010对象模型以编程方式(使用C#代码)打开XSN。我想打开.XSL文件并更改一些文本,然后重新打包该文件。我知道有一些程序集,如Microsoft.Deployment.Compression和Microsoft.Deployment.Compression.Cab,它们将提取XSN(Cab文件)并将其解压缩到临时文

我在Sharepoint 2010中有一个文档库,并存储了infopath 2010表单模板(XSN文件)。是否有一种方法可以使用SharePoint对象模型或Infopath 2010对象模型以编程方式(使用C#代码)打开XSN。我想打开.XSL文件并更改一些文本,然后重新打包该文件。我知道有一些程序集,如
Microsoft.Deployment.Compression
Microsoft.Deployment.Compression.Cab
,它们将提取XSN(Cab文件)并将其解压缩到临时文件夹中。但这需要一些更高的权限等等


是否有更好的方法使用infopath 2010或sharepoint 2010对象模型执行此操作。

是的,您可以使用infopath 2010 OM从模板中提取任何文件(要求代码以实际IP形式存在),方法如下:

public XmlDocument ExtractFromPackage(string fileName)
{            
    try 
    {
        XmlDocument doc = new XmlDocument();

        using (Stream stream = Template.OpenFileFromPackage(fileName))
            doc.Load(stream);

        return doc;
    } 
    catch (Exception ex)
    { 
        throw new Exception(string.Format("Error extracting '{0}': {1}", 
            fileName, ex.Message), ex);
    }
}

代码从打包的文件中获取流并加载到XmlDocument(只能用于XSL文件)中,然后您可以使用该文档更轻松地进行操作。

是的,您可以使用InfoPath 2010 OM从模板中提取任何文件(要求代码以实际IP形式进行代码隐藏),方法如下:

public XmlDocument ExtractFromPackage(string fileName)
{            
    try 
    {
        XmlDocument doc = new XmlDocument();

        using (Stream stream = Template.OpenFileFromPackage(fileName))
            doc.Load(stream);

        return doc;
    } 
    catch (Exception ex)
    { 
        throw new Exception(string.Format("Error extracting '{0}': {1}", 
            fileName, ex.Message), ex);
    }
}
代码从打包的文件中获取流并加载到XmlDocument(只能用于XSL文件)中,然后您可以使用它更轻松地进行操作。

查看此链接,可能有用查看此链接,可能有用