我构建的web服务默认返回XML,我添加了自己的XML节点,我需要在不同的应用程序(Nintex)中查询。我用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;
}
我得到的结果是
<xml>
<result xmlns="http://dev01/">Succes</result>
<username xmlns="http://dev01/">test0101</username>
<email xmlns="http://dev01/">test0101@dev01.local</email>
<password xmlns="http://dev01/">somepassword</password>
</xml>
所以当我尝试通过执行/ xml / result来提取例如结果值时它不起作用,我无法读出值或进行调试,因为Nintex不会让我...我试过了很多不同的xpath查询,但没有给出我想要的结果,任何想法我做错了什么?
这可能是一个新手问题,但我真的被困在这里: - (
答案 0 :(得分:3)
我对Nintex产品一无所知,但您的问题是您需要通知您使用的任何XPath处理器有关“http://dev01/”命名空间的信息。
通常,这是通过使用命名空间管理器对象并关联XPath处理器或在执行XPath时作为参数传递来完成的。
命名空间管理器包含命名空间列表以及用于它们的别名。因此,在此示例中,您可以将别名'a'与“http://dev01/”相关联。您的XPath将变为: - /xml/a:result
。
这里有一个想法,就是它在C#中会是什么样子(如何将它移植到你不知道的Nintex工具中)。
XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
nsmgr.AddNamespace("a", "http://dev01/");
XmlNode resultNode = doc.SelectSingleNode("/xml/a:result", nsmgr);
答案 1 :(得分:0)
由于在SharePoint GUI(以及所有其他操作)中配置了Nintex“调用Web服务”操作,因此无法使用C#代码解析Nintex中的XML输出,因此我并不认为之前的答案是某种方式相关的。
要了解Nintex的Web服务输出结果,您可以使用以下博客文章中描述的方法: http://vtonms.blogspot.com/2009/12/nintex-workflow-web-service-xml-result.html
当您从Web服务获得工作流变量实际获得的印象时,您可以轻松使用“查询XML”集成操作从XML获取所需的详细信息。希望这可以帮助。祝你好运!