将表单部署到服务器时,SelectSingleNode始终返回null

时间:2012-02-08 20:25:51

标签: c# sharepoint infopath selectsinglenode

当我将Infopath 2007表单部署到 SharePoint 服务器时, SelectSingleNode 始终返回null但始终在本地运行。以下是失败的以下代码示例:

  

XPathNavigator vendor = payeeDS.SelectSingleNode(
    “/ dfs:myFields / dfs:dataFields / tns:GetVendorsResponse / tns:GetVendorsResult / NewDataSet / Vendor s [Name ='”   + payeeTypedName +“']”,NamespaceManager);

我正在写入事件查看器,因此我可以确认代码实际上已被命中。该表格已获得管理员批准且具有完全信任。

关于可能导致此问题的任何想法?

由于

2 个答案:

答案 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);
  1. 您可以通过以下方式访问节点。

    payeeDS.SelectSingleNode(“/ DFS:myFields / DFS:数据域).. firstChild.firstChild;