1

BizTalk xpath 機能に苦労しています
- メッセージのデフォルトの名前空間が空白です
- C# では NameSpaceManager を追加します
- しかし、BizTalk Expression でこれを行う方法がわかりません。

私が失敗しているのは、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>
  ...
4

2 に答える 2

1

local-name()次のような不要な要素を選択できるため、使用する答えは間違っています。

  • OhMy:エラーあり
  • Different:HasErrors
  • UnWanted:HasErrors

正しい解決策の 1 つを次に示します。

接頭辞をデフォルトの名前空間http://www.aniteps.com/xml/schemas/awm/images4」にバインドできない場合は、標準の XPath 関数を使用しnamespace-uri()て、要素が存在する必要があることを指定できます。指定された名前空間。

したがって、必要な 2 種類のノードを選択する XPath 式の一例は次のとおりです。

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

そして式:

/*/*[namespace-uri() = 'http://www.aniteps.com/xml/schemas/awm/images4'
   と
     name() = 'NumberOfErrors'
    ]
于 2009-04-26T21:39:59.093 に答える
0

要素が繰り返されていない場合は、それらを応答スキーマから識別フィールドとして昇格させることができます。その後、コーディングについて心配する必要はありません。使用するだけです:

x = YourMessageName.HasErrors;

Web/wcf 参照の場合、reference.xsd (または「Consume Wcf Service Wizard」を使用した xyz.xsd) から値をプロモートできます。参照を更新すると、それらが「消える」ことに注意してください。

于 2009-04-27T11:15:32.550 に答える