private void OnMessageReceived(string sender, string message) { if (string.IsNullOrEmpty(message)) { return; } using (var reader = new StringReader(message)) { var nav = new XPathDocument(reader).CreateNavigator(); foreach (XPathNavigator actionNode in nav.Select(ActionsExpr)) { if (actionNode.Name.Equals("uiElementActionRef", StringComparison.InvariantCultureIgnoreCase)) { var actionId = Guid.Parse(actionNode.GetAttribute("Id", string.Empty)); var data = actionNode.Value; Guid pluginId; Guid.TryParse(actionNode.GetAttribute("PluginId", string.Empty), out pluginId); _pluginManager.ExecuteAction(actionId, !Guid.Empty.Equals(pluginId) ? (Guid?)pluginId : null, data); } } } }