0

我正在使用 CRM Dynamics 2011。我有这个代码

var roles = oXml.selectNodes("//BusinessEntity/q1:name");

其中 oXml 是我的 xml,通过 XMLHttpRequest 获得。

我需要我的代码在 Chrome 中工作,但似乎 chrome 不支持选择节点。

我尝试

var roles = document.evaluate( "//BusinessEntity/q1:name", oXml, null, XPathResult.ANY_TYPE, null );

它不起作用。我不知道我错过了什么。

谢谢!

4

1 回答 1

0

我遇到了完全相同的问题,并且我认为我已经找到了解决方案:您的代码不起作用的原因如下:您没有指定正确的 XML 命名空间解析器。这意味着 Chrome 或 Firefox 无法理解如何查找元素“q1:name”。

您可以在下面找到在 CRM 2011 中获取业务实体名称的正确版本:

function nsResolver(prefix) {
  var ns = {
    'q1': 'http://schemas.microsoft.com/crm/2007/WebServices'
  };

  return ns[prefix] || null;
}

var roles = node.evaluate("//BusinessEntity/q1:name", oXml, nsResolver, XPathResult.ANY_TYPE, null);

有关命名空间解析的更多信息,请参见https://developer.mozilla.org/en-US/docs/Introduction_to_using_XPath_in_JavaScript#Implementing_a_User_Defined_Namespace_Resolver

希望这可以帮助!

于 2013-04-29T10:41:14.743 回答