将 XML 数据从 Web 服务获取到 Infopath





4.00/5 (2投票s)
这全部是关于通过 Web 服务将 XML 数据获取到 Infopath
在InfoPath中使用“筛选数据”功能
创建一个简单的Web服务XML数据源
- 启动Microsoft Visual Studio .NET。
- 在“文件”菜单上,单击“新建”,然后单击“项目”。
- 在“项目类型”列表中,选择“Visual Basic 项目”。
- 在“模板”列表中,选择“ASP.NET Web 服务”。
- 在“位置”框中,键入 http://
/PopulateCities/Service1.asmx?wsdl ,然后单击“下一步”。 - 在“解决方案资源管理器”中,右键单击“PopulateCities”,指向“添加”,然后单击“添加新项”。 出现“添加新项”对话框。
- 在“模板”部分中,单击“XML 文件”,在“名称”框中键入 Allcities.xml,然后单击“打开”。
- 用以下代码替换所有内容,然后单击“保存”。
<?xml version="1.0" encoding="utf-8" ?> <States> <State value="FL"> <ArrayOfString> <string>Coral Gables</string> <string>Miami</string> <string>Orlando</string> <string>Tallahassee</string> </ArrayOfString> </State> <State value="MI"> <ArrayOfString> <string>Detroit</string> <string>Flint</string> <string>Lansing</string> <string>Livonia</string> </ArrayOfString> </State> <State value="Unknown"> <ArrayOfString> <string>Unknown State</string> </ArrayOfString> </State> </States>
- 右键单击 Service1.asmx,然后单击“查看代码”。
- 将以下代码示例添加到代码页的顶部。
Imports System.Xml Imports System.IO Add the following Web service method to the Service1 class. // VB.net code <WebMethod()> _ Public Function GetCities2() As System.Xml.XmlDocument Dim path As String path = Server.MapPath("AllCities.xml") Dim doc As New System.Xml.XmlDocument doc.Load(path) GetCities2 = doc End Function
C# 代码
[WebMethod()]
public System.Xml.XmlDocument GetCities2()
{
string path = null;
path = Server.MapPath("Allcities.xml");
System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
doc.Load(path);
return doc;
}
在“生成”菜单上,单击“生成解决方案”。
创建 InfoPath 表单
- 启动 InfoPath。
- 在 InfoPath 2007 中的“文件”菜单上,单击“设计表单模板”。 在 InfoPath 2003 中的“文件”菜单上,单击“设计表单”。
- 将控件添加到新表单。 为此,请按照下列步骤操作
- 在 InfoPath 2007 中的“设计表单模板”任务窗格中,单击“空白”,然后单击“确定”。 在 InfoPath 2003 中的“设计表单”任务窗格中,单击“新建空白表单”。
- 在“设计任务”任务窗格中,单击“控件”。
- 在“插入控件”列表中,选择“下拉列表框”。 一个名为
field1
的新下拉列表被添加到表单中。 - 在 Microsoft InfoPath Designer 中,右键单击
field1
,然后单击“下拉列表框属性”。 - 在“下拉列表属性”对话框中,单击“添加”。
- 在“添加选项”对话框的“值”框中,键入 FL,然后单击“确定”。
- 在“下拉列表属性”对话框中,单击“添加”。
- 在“添加选项”对话框的“值”框中,键入 MI,然后单击“确定”。
- 在“下拉列表框属性”对话框中,单击“确定”。
- 在“插入控件”列表中,选择“下拉列表框”。 一个名为
field2
的新下拉列表被添加到表单中。
- 在“工具”菜单上,单击“数据连接”。
- 在“数据连接”对话框中,单击“添加”。
- 在“数据连接向导”对话框中,单击“接收数据”,然后单击“下一步”。
- 单击“Web 服务”,然后单击“下一步”。
- 在“位置”框中,键入 http://
/PopulateCities/Service1.asmx?wsdl ,然后单击“下一步”。 - 在“选择操作”列表中,单击
GetCities2
,然后单击“下一步”。 - 在“数据连接向导”对话框中,单击“完成”。
- 在“数据连接”对话框中,单击“关闭”。
- 在 InfoPath Designer 中,右键单击 field2,然后单击“下拉列表框属性”。
- 在 InfoPath 2007 中的“列表框条目”列表中,选择“在表单的数据源中查找值”。 在 InfoPath 2003 中的“列表框条目”列表中,选择“在数据连接中查找值到数据库、Web 服务、文件或 SharePoint 库或列表中”。
- 单击“选择 XPath”,位于“条目”框的右侧。 出现“选择字段或组”对话框。
- 添加筛选器到返回数据。 为此,请按照下列步骤操作
- 展开“所有注释”,单击“字符串”,然后单击“筛选数据”。 出现“筛选数据”对话框。
- 单击“添加”。 出现“指定筛选条件”框。
- 在第一个下拉列表中,单击“选择字段或组”。
- 在“数据源”部分,单击“GetCities (次要)”。
- 在 dataFields 节点中,单击“值”,然后单击“确定”。
- 单击“等于”作为第二个下拉列表。
- 在第三个下拉列表中,单击“选择字段或组”。
- 在“数据源”部分,单击“主”。
- 单击
field1
,然后单击“确定”。 - 单击“确定”关闭所有打开的对话框。
- 单击“保存”以保存表单。
测试表单
- 在 InfoPath 2007 中的“文件”菜单上,指向“预览”,然后单击“表单”。 在 InfoPath 2003 中的“文件”菜单上,指向“预览表单”,然后单击“默认”。
- 单击 FL,单击 MI,然后从第一个下拉列表中单击“未知”。 请注意,第二个下拉列表按预期更新。