2016-04-27 5 views
1

В приведенном ниже сообщении я хочу установить 2 'незыблемые' узлы параметру vParam. можно легко установить «cvalue» с помощьюXPath для установки нескольких значений

xpath(MyMsg.Body, "//*[local-name()='cvalue']") = vParam; 

Но я не нашел хороший способ установки 2 «» invunique узлов в 1 XPath заявления, какие-то идеи?

<ns0:newcase xmlns:ns0="http://MyNamespace/v1-0"> 
<ns0:caseheader> 
    <ns0:caseunique>10</ns0:caseunique> 
</ns0:caseheader> 
<ns0:financials> 
<ns0:invoices> 
    <ns0:invoice> 
     <ns0:caseunique>10</ns0:caseunique> 
     <ns0:invunique>10</ns0:invunique> 
     <ns0:invudfs> 
     <ns0:invudf> 
      <ns0:invunique>20</ns0:invunique> 
      <ns0:cvalue>cvalue_0</ns0:cvalue> 
      <ns0:otherdesc>otherdesc_0</ns0:otherdesc> 
     </ns0:invudf> 
     </ns0:invudfs> 
    </ns0:invoice> 
</ns0:invoices> 
</ns0:financials> 
</ns0:newcase> 

ответ

2

Насколько я знаю (я не проверял это, к сожалению), функция XPath «сеттер» будет только в состоянии обновить свой первый матч. Если бы у вас был второй узел cvalue, только первый был бы обновлен.

Любая причина, по которой вы хотели бы, чтобы оба обновления обновлялись в одном выражении вместо двух операторов?

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

+0

2 заявления сделают это, я полагаю. Я использую утилиту C# для установки переменных, а затем хочу использовать переменные для обновления сообщения без необходимости в карте. Могу ли я спросить, какова будет структура xpath, чтобы установить второе значение invunique? – DarkW1nter

+0

Работал, спасибо – DarkW1nter

Смежные вопросы