Как извлечь части текста с помощью XPath и поместить их в атрибуты woocommerce в качестве пары ключ: значение? - PullRequest
0 голосов
/ 17 июня 2020

Я хочу извлечь слова (текст) как пару ключ: значение из данного XML пример:

<description>
[Партиден номер]: 2UW01AA [Номер на модела]: HP 14.1 Business Sleeve [Line]: Business [Screen size]: 14.1&quot; [Material]: Polyester [Color]: Black [Dimensions]: [more]
</description>

Я хочу получить такой результат:

Партиден номер 2UW01AA
Номер на модела HP 14.1 Business Sleeve
Line Business
Screen size 14.1&quot;
Material Polyester
Color Black

Я хочу знать Xpath для первого и второго слова как пару ключ: значение для вставки в атрибуты woocommerce. Требуются два запроса Xpath для результата.

translate(substring-before(substring-after(//description,"["),": ["),"[]:",codepoints-to-string(10) ) 

Это дает мне правильный результат, но мне нужно два запроса Xpath, один для первого слова и один для второго слова.

1 Ответ

0 голосов
/ 18 июня 2020

Для значений (translate вернет строку с несколькими строками, тогда как tokenize вернет список строк):

translate(replace(replace(replace(replace(substring-before(normalize-space(//description)," [more"), "\[(.*?)\]:", ";")," ; ",";")," ;",""),"; ",""),";",codepoints-to-string(10))

tokenize(replace(replace(replace(replace(substring-before(normalize-space(//description)," [more"), "\[(.*?)\]:", ";")," ; ",";")," ;",""),"; ",""),";")

Вывод:

2UW01AA
HP 14.1 Business Sleeve
Business
14.1"
Polyester
Black

Для ключи:

translate(substring-before(substring-after(replace(normalize-space(//description),"\]: (.+?) \[",";"),"["),"]"),";",codepoints-to-string(10))

tokenize(substring-before(substring-after(replace(normalize-space(//description),"\]: (.+?) \[",";"),"["),"]"),";")

Вывод:

Партиден номер
Номер на модела
Line
Screen size
Material
Color
Dimensions

Примечание: конечно, предыдущие выражения можно было бы значительно оптимизировать.

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