当我将Infopath 2007
表单部署到 SharePoint 服务器时, SelectSingleNode 始终返回null但始终在本地运行。以下是失败的以下代码示例:
XPathNavigator vendor = payeeDS.SelectSingleNode(
“/ dfs:myFields / dfs:dataFields / tns:GetVendorsResponse / tns:GetVendorsResult / NewDataSet / Vendor s [Name ='” + payeeTypedName +“']”,NamespaceManager);
我正在写入事件查看器,因此我可以确认代码实际上已被命中。该表格已获得管理员批准且具有完全信任。
关于可能导致此问题的任何想法?
由于
答案 0 :(得分:0)
XPathNavigator行为不会根据环境而改变。我不确定,但你可能有两个问题之一。
payeeDS没有加载为有效的XML文件,无法读取,或者更有可能,
Sharepoint已将一些NameSpacing添加到XML文件中,您需要更改导航。
答案 1 :(得分:0)
验证您的节点路径。(“/ dfs:myFields / dfs:dataFields / tns:GetVendorsResponse / tns:GetVendorsResult /) 路径的第一部分位于一个名称空间(dfs :)中,其他部分位于其他名称空间(tns :)中。 你可以做两件事
1.使用您的Web服务设置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:数据域).. firstChild.firstChild;