通过代码解压出InfoPath模板文件xsn中的文件

2022-07-14 20:17:14   文档大全网     [ 字体: ] [ 阅读: ]

#文档大全网# 导语】以下是®文档大全网的小编为您整理的《通过代码解压出InfoPath模板文件xsn中的文件》,欢迎阅读!
压出,文件,InfoPath,模板,通过
经过一天的搜索,发现InfoPath模板文件是一个后缀为xsn的文件,其实他是一个cab文件,大家可以试试,将他的后缀修改为cab或者zip,都可以解压出来文件。但是我们如何通过代码的方式来解压出其中的文件呢?在

SharePoint中的表单库,我们不能等用户上传表单文件后再进行数据结构的分析,所以我们要从InfoPath模板文件下手,最先想到的就是操作表单库的模板文件,也就是InfoPath模板文件,这里语义有些歧异。InfoPath设计后的后缀名为xsn文件是InfoPath模板文件,而在SharePoint表单库中的

InfoPath模板文件确是一个后缀为xmlInfoPath模板文件。后者就是我们需要进行分析的文件。用记事本打开它我们会发现它是一个标准的XML文件,但是确比一般的XML文件多出了一些描述内容:

mso-infoPathSolution

name="urn:schemas-microsoft-com:office:infopath:XmUJ-i-Jk1RQ77--5e---:-myXSD-2008-05-09T02-41-53" href="manifest.xsf" solutionVersion="1.0.0.6" productVersion="12.0.0" PIVersion="1.0.0.0" ?>

mso-application progid="InfoPath.Document" versionProgid="InfoPath.Document.2"?>

这两行描述的作用就是指出这是一个InfoPath的表单模板保存xml文件后,如果机器上安装了InfoPath(我的环境是InfoPath 2007),那么这个xml文件的图标就会发生改变,变成可由InfoPath打开的一个文件,我们双击后就会以InfoPath来打开这个文件。这里不再多说,不是我们的主题。

于是我想做的更好一些,在管理员发布表单模板xsn文件后,直接操作这个xsn文件。由于它就是个cab压缩包,我将其进行了解压。发现了其中具有六个文件:

manifest.xsf

myschema.xsd

sampledata.xml

template.xml

upgrade.xsl

view1.xsl

哈,发现了我们需要的tempalte.xml文件。其他文件也各有用处,此处不需关心他们。那么我们只要实现了解压xsn文件,那么就能获得这个模板文件来对InfoPath表单的数据结构进行分析了。


刚开始,westart同学给我提供了微软解决方案包中的InfoPath操作函数,这里也共享给大家,如下:

public bool f_ExternXsn(string InputFile, string OutputDirecty) { try {

string serverMap = Server.MapPath(""); FileInfo fi = new FileInfo(InputFile);

DirectoryInfo di = new DirectoryInfo(OutputDirecty); System.Diagnostics.Process process1 = new System.Diagnostics.Process(); process1.StartInfo.Arguments = @"/y /e " + fi.FullName + @" /l " + di.FullName;

process1.StartInfo.FileName = serverMap + @"\extract.exe "; process1.Start(); //等待解压

while (!process1.HasExited) { }

process1.Close(); return true; }

catch (System.Exception err) {

Response.Write(""); return false; } }




本文来源:https://www.wddqxz.cn/031c09c58bd63186bcebbcdc.html

相关推荐