проблемы с выводом xml из C # webservice и / или запроса xpath - PullRequest
1 голос
/ 27 августа 2009

Созданный мной веб-сервис по умолчанию возвращает 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, но ни один из них не дает желаемого результата, есть идеи, что я делаю неправильно?

Это, вероятно, проблема новобранца, но я действительно застрял здесь: - (

Ответы [ 2 ]

3 голосов
/ 27 августа 2009

Я ничего не знаю о продуктах 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);
0 голосов
/ 07 декабря 2010

Код C # нельзя использовать для разбора вывода XML в Nintex, поскольку действие Nintex «Вызов веб-службы» настроено в графическом интерфейсе SharePoint (как и во всех других действиях), поэтому я не думаю, что предыдущий ответ каким-то образом отношение.

Чтобы узнать, как выглядит вывод вашей веб-службы для Nintex, вы можете использовать метод, описанный в следующем сообщении в блоге: http://vtonms.blogspot.com/2009/12/nintex-workflow-web-service-xml-result.html

Когда вы получаете представление о том, что вы на самом деле получаете в переменной рабочего процесса из веб-службы, вы можете легко использовать действие интеграции "Query XML", чтобы получить необходимые данные из XML. Надеюсь это поможет. Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...