2009-08-27 9 views
1

Le webservice que j'ai construit retourne XML par défaut, j'ai ajouté mes propres nœuds XML que j'ai besoin d'interroger dans une application différente (Nintex). Je fais ça avec Xpath. Mais je ne peux pas sembler obtenir le résultat que je veux ...Problèmes avec la sortie xml du service web C# et/ou de la requête xpath

public class Service1 : System.Web.Services.WebService 
{ 
    public struct aduser 
    { 
     public String result; 
     public String username; 
     public String email; 
     public String password; 
    } 

    [WebMethod] 
    public aduser CreateADUser(string domain, ... 

    ... 
    ... 
    ... 

    user.result = "Succes"; 
    user.username = loginName; 
    user.email = emailAddress; 
    user.password = password; 

    return user; 
} 

Le résultat que je reçois est

<xml> 
    <result xmlns="http://dev01/">Succes</result> 
    <username xmlns="http://dev01/">test0101</username> 
    <email xmlns="http://dev01/">[email protected]</email> 
    <password xmlns="http://dev01/">somepassword</password> 
</xml> 

quand je tente d'extraire par exemple la valeur de résultat en faisant/xml/résultat Cela ne fonctionne pas, je ne peux pas lire la valeur ou faire le débogage parce que Nintex ne me laisse pas ... J'ai essayé beaucoup de requêtes xpath différentes mais aucune ne donne le résultat que je veux, aucune idée de ce que je ' Je fais mal?

Ceci est probablement un rookieproblem mais je suis vraiment coincé ici :-(

+0

Pouvez-vous nous montrer un petit extrait de code pour nous dire ce que vous essayez? –

+0

bien, le code ci-dessus est tout le code que j'utilise pour la sortie, reste (que je n'ai pas copié) est juste du code pour remplir ces variabeles ... ce que j'utilise dans Nintex est "/ xml/result/text() ", cette requête que j'ai créée dans Liquid XML studio par essais et erreurs sur la sortie XML initiale que je reçois du webservice ... Je pense que cela a à voir avec l'absence d'un espace de noms ... – erik404

Répondre

3

Je ne sais pas quoi que ce soit sur les produits Nintex mais votre problème est que vous devez informer tout processeur XPath que vous utilisez sur le "http://dev01/ "espace de noms.

Typiquement, cela se fait à l'aide d'un objet gestionnaire d'espace de noms et d'associer un processeur XPath ou passer comme paramètre lors de l'exécution du XPath.

le gestionnaire d'espace de noms contient une liste des espaces de noms et les alias utilisés pour Donc, dans cet exemple, vous pouvez associer t il aliaes 'a' avec "http://dev01/". Votre XPath deviendrait: - /xml/a:result. En guise d'idée voici ce à quoi cela ressemblerait en C# (comment porter ceci à votre outil Nintex je ne sais pas).

XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable); 
nsmgr.AddNamespace("a", "http://dev01/"); 
XmlNode resultNode = doc.SelectSingleNode("/xml/a:result", nsmgr); 
+0

thnx pour la réponse , Je vais essayer de construire cela dans mon application! – erik404

0

Le code C# ne peut pas être utilisé pour analyser la sortie XML dans Nintex depuis Nintex action « Appel de service Web » est configuré dans l'interface graphique SharePoint (ainsi que toutes les autres actions), donc je ne pense pas vraiment que le La réponse précédente est en quelque sorte pertinente.

Pour savoir comment votre sortie de service Web ressemble à Nintex vous pouvez utiliser la méthode décrite dans le billet de blog suivant: http://vtonms.blogspot.com/2009/12/nintex-workflow-web-service-xml-result.html

Lorsque vous obtenez une impression ce que vous obtenez en fait dans votre variable de flux de travail à partir du Web service, vous pouvez facilement utiliser l'action d'intégration "Requête XML" pour obtenir les détails dont vous avez besoin à partir du XML. J'espère que cela t'aides. Bonne chance!

+0

Le lien ci-dessus ne fonctionne pas, pouvez-vous décrire la solution? – Mahen

+0

Il y a cinq ans, un peu tard pour se souvenir –

Questions connexes