Найти значение параметра по тексту в регулярном выражении или экстракторе xpath - PullRequest
0 голосов
/ 13 мая 2019

как извлечь значение параметра из текста с помощью регулярных выражений или xpath из приведенного ниже ответа

экстрактор xpath

 //*[@id="form_extsss:fromSerie2"]/option[text()='-DRIVE_ME']/@value

, например:

значение опции для -DRIVE_ME равно 630 (ожидая 630 как окончательное значение)

Ответ

    <?xml version="1.0" encoding="UTF-8"?>
<partial-response>
   <changes>
      <update id="form_extsss"><![CDATA[<form id="form_extsss" name="form_extsss" 
      method="post" action="" enctype="multipart/form-data">
        <select id="form_extsss:fromSerie2" name="form_extsss:fromSerie2" size="1" onchange="PrimeFaces.ab({s:&quot;form_extsss:fromSerie2&quot;,e:&quot;valueChange&quot;,p:&quot;form_extsss:fromSerie2&quot;,u:&quot;form_extsss&quot;});" style="width:110px">  <option value="-1">Select Series</option>   
        <option value="1384">-HAD</option>  
        <option value="630">-DRIVE_ME</option>
        </select>                       
                                    </form>]]></update>
      <update id="javax.faces.ViewState"><![CDATA[]]></update>
   </changes>
</partial-response>

Ответы [ 3 ]

0 голосов
/ 13 мая 2019

Использование xpath не будет работать, поскольку CDATA представлен только в виде строки.

Однако, если у вас есть xquery, выполните

let $x := <partial-response>
    <changes>
      <update id="form_extsss"><![CDATA[<form id="form_extsss" name="form_extsss" method="post" action="" enctype="multipart/form-data">
      <select id="form_extsss:fromSerie2" name="form_extsss:fromSerie2" size="1"  onchange="PrimeFaces.ab({s:&quot;form_extsss:fromSerie2&quot;,e:&quot;valueChange&quot;,p:&quot;form_extsss:fromSerie2&quot;,u:&quot;form_extsss&quot;});" style="width:110px">
        <option value="-1">Select Series</option>   
        <option value="1384">-HAD</option>  
        <option value="630">-DRIVE_ME</option>
      </select>                       
                                </form>]]></update>
      <update id="javax.faces.ViewState"><![CDATA[]]></update>
    </changes>
  </partial-response>

return parse-xml($x/changes/update/text())/form/select/option/@value
0 голосов
/ 14 мая 2019

Проверьте, помогает ли приведенное ниже регулярное выражение в вашем сценарии: - enter image description here enter image description here

0 голосов
/ 13 мая 2019
<option value="630">

Следующее регулярное выражение можно использовать в экстракторе регулярного выражения: -

<option value="(.\d*)">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...