Как выполнить цикл Xpath для ряда атрибутов? - PullRequest
0 голосов
/ 20 июня 2019

Я работаю над извлечением частей файла XML.И мне нужно получить три третьих значения данных (которые 1.25, 1.9 и 2.92 соответственно).

Код файла XML выглядит следующим образом:

<logData>
<data>499,498.99,1.25,0,1.45,3.67,11.02,187.66,0.29,116.24,0.01,0.05,0.01,0,886.03,1089.99,1.11,14.67,0.29,1.12,1.11</data>
<data>500.01,500,1.9,0.01,1.42,9.94,11.32,185.7,0.29,116.24,0.01,0.01,0.01,0,795.19,973.48,1.11,14.67,0.29,0.95,1.11</data> 
<data>501.03,501.02,2.92,0.02,1.41,20.46,11.62,184.23,0.29,120,0.01,0.01,0.01,0,796.68,956.25,1.11,14.67,0.29,0.83,1.11</data>
   </logData>

(tokenize(//logData/data,','))[3] возвращает неправильное сообщение "

" Невозможно выполнить операцию XPath. Последовательность из более чем одного элемента не допускается в качестве первого аргумента tokenize (). "

Поскольку Xpath выполняет циклы автоматически, должен существовать синтаксис, позволяющий выбрать первый набор данных для применения токенизации, затем перейти к следующему набору и т. Д.

Любая помощь будет принята!

1 Ответ

0 голосов
/ 20 июня 2019

tokenize() принимает ввод как строку и возвращает строковое значение.Если вы хотите получить значения, вам, вероятно, придется передать xpath с индексами.

tokenize(//logData/data[1],',')[3] #returns 1.25

tokenize(//logData/data[2],',')[3] #returns 1.9

tokenize(//logData/data[last()],',')[3] #returns 2.92
...