C# 以编程方式打开infopath模板文件(XSN)
我在Sharepoint 2010中有一个文档库,并存储了infopath 2010表单模板(XSN文件)。是否有一种方法可以使用SharePoint对象模型或Infopath 2010对象模型以编程方式(使用C#代码)打开XSN。我想打开.XSL文件并更改一些文本,然后重新打包该文件。我知道有一些程序集,如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文件)并将其解压缩到临时文
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文件)中,然后您可以使用它更轻松地进行操作。查看此链接,可能有用查看此链接,可能有用