当表单部署到服务器时,SelectSingleNode总是返回null
本文关键字:SelectSingleNode 返回 null 表单 部署 服务器 | 更新日期: 2023-09-27 18:23:44
当我将Infopath 2007
表单部署到SharePoint服务器时,SelectSingleNode始终返回null,但始终在本地工作。以下是一个失败的代码示例:
XPathNavigator vendor=payeeDS-SelectSingleNode(
"/dfs:myFields/dfs:dataFields/tns:GetVendorsResponse/tns:GetVendorsResult/NewDataSet/Vvendor s[Name='"+payeeTypedName+"']",NamespaceManager);
我正在给事件查看器写信,以便确认代码确实命中了。该表单由管理员批准,并具有完全信任。
有什么想法可以引起这个问题吗?
感谢
XPathNavigator的行为不会根据环境而改变。我不确定,但你可能有两个问题中的一个。
payeeDS没有作为有效的XML文件加载,无法读取,或者更有可能是
Sharepoint在XML文件中添加了一些NameSpacing,您需要更改导航。
验证节点路径。("/dfs:myFields/dfs:dataFields/tns:GetVendorsResponse/tns:GetVendorsResult/)路径的第一部分在一个名称空间(dfs:)中,另一部分在其他名称空间(tns:)中。你可以做两件事
1.设置tns的名称空间:使用您的网络服务
IXMLDOMDocument2 domXml = (IXMLDOMDocument2)xDocument.DataObjects[dataSource].DOM;
string selectionNamespaceValue = string.Empty;
public const string SELECTION_NAMESPACE_VALUE =
"xmlns:dfs='http://schemas.microsoft.com/office/infopath/2003/dataFormSolution' xmlns:ns1='{0}'";
selectionNamespaceValue = string.Format(CultureInfo.CurrentCulture, Constants.SELECTION_NAMESPACE_VALUE,Constants.DEFAULT_WEB_SERVICE);
domXml.setProperty("SelectionNamespaces", selectionNamespaceValue);
您可以通过以下方式访问节点。
payeeDS-SelectSingleNode("/dfs:myFields/dfs:dataFields)..firstChild.firstChild;