BizTalk xpath с пространством имен по умолчанию и без префиксов - PullRequest
1 голос
/ 24 апреля 2009

Я борюсь с функциональностью BizTalk xpath
- полученное сообщение имеет пустое пространство имен по умолчанию
- в C # я бы добавил NameSpaceManager
- но я не вижу, как я могу сделать это в выражении BizTalk?

Все, что я не могу сделать, это получить значения HasErrors и NumberOfErrors

<?xml version="1.0" encoding="utf-8"?>
<ImportIndexDocumentResponse   
      xmlns:xsd="http://www.w3.org/2001/XMLSchema"        
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns="http://www.aniteps.com/xml/schemas/awm/images4">
  <HasErrors>false</HasErrors>
  <NumberOfErrors xsi:type="xsd:int">0</NumberOfErrors>
  <ErrorDescription xsi:type="xsd:string">No exception ocurred.</ErrorDescription>
  ...

Ответы [ 2 ]

1 голос
/ 27 апреля 2009

Ответ с использованием local-name() неверен, так как позволяет выбирать нежелательные элементы, такие как:

  • OhMy: HasErrors
  • Различные: HasErrors
  • Нежелательные: HasErrors

Вот одно правильное решение:

В случае, если невозможно привязать префикс к пространству имен по умолчанию"http://www.aniteps.com/xml/schemas/awm/images4", , можно использовать стандартную функцию XPath namespace-uri() чтобы указать, что элемент должен находиться в заданном пространстве имен.

Поэтому, одним из примеров выражений XPath, которые выбирают два типа разыскиваемых узлов, является :

/*/*[namespace-uri() = 'http://www.aniteps.com/xml/schemas/awm/images4'
   and
     name() = 'HasErrors'
    ]

и выражение:

/*/*[namespace-uri() = 'http://www.aniteps.com/xml/schemas/awm/images4'
   and
     name() = 'NumberOfErrors'
    ]
0 голосов
/ 27 апреля 2009

Если ваши элементы не повторяются, вы можете выдвинуть их из схемы ответа в качестве выделенных полей. Тогда вам не нужно беспокоиться о кодировании. Просто используйте:

x = YourMessageName.HasErrors;

Если это ссылка на web / wcf, вы можете повысить значения из файла reference.xsd (или xyz.xsd с помощью «Consume Wcf Service Wizard»). Просто знайте, что если вы обновите ссылку, они «исчезнут».

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