从XMLFormView中提取XML

本文关键字:XML 提取 XMLFormView | 更新日期: 2023-09-27 18:05:45

是否有一种方法可以获得XMLFormView中呈现的XML ?我试图为InfoPath表单创建一个带有"另存为PDF"按钮的自定义web部件。其思想是将XML与表单的XSL结合起来,并将生成的HTML转换为PDF,以弹出窗口的形式呈现给用户。

从XMLFormView中提取XML

http://msdn.microsoft.com/en-us/library/microsoft.office.infopath.server.controls.xmlformview.xmllocation.aspx

该属性将为您提供基本XML文件的Url。您可以读取流阅读器来读取此XML

看看我的codeplex项目http://ip2html.codeplex.com/

它允许你从给定的(InfoPath) XML生成HTML &(XMLFormView) XSLT。

我们最终使用XmlFormHostItem.NotifyHost方法在单击按钮的事件中将HTML发送到自定义web部件,该部件使用Winnovative HTML到PDF转换器将HTML转换为PDF。

从InfoPath代码生成HTML:

var formData = new XmlDocument();
var xslt = new XslCompiledTransform(true);
// Load the form data 
formData.LoadXml(MainDataSource.CreateNavigator().InnerXml);
// Extract the stylesheet from the package
xslt.Load(ExtractFromPackage("Print.xsl")); // (uses Template.OpenFileFromPackage(string fileName) to get xsl)
// Perform XSL-transformation
// [...]
// Send HTML to web part
this.NotifyHost(formData.InnerXml);

这个方法的一个缺点是NotifyHost事件每个表单只触发一次,所以如果用户单击'Save as PDF'然后取消,他必须重新加载表单以便能够保存为PDF。