Как извлечь части текста с помощью XPath? - PullRequest
1 голос
/ 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

Какой именно x-путь я могу использовать для этого результата ?

Ответы [ 3 ]

1 голос
/ 17 июня 2020

Вы можете использовать функцию fn:replace() с группой захвата регулярных выражений:

replace(/description, "\[(.*?)\]:", "&#10;$1")
1 голос
/ 17 июня 2020

Другой способ сделать это с помощью XPath 2.0:

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

Вывод:

Партиден номер 2UW01AA 
Номер на модела HP 14.1 Business Sleeve 
Line Business 
Screen size 14.1" 
Material Polyester 
Color Black 
Dimensions
0 голосов
/ 17 июня 2020

XPath предоставит вам элемент описания, затем вы можете использовать функцию replace , чтобы удалить квадратные скобки или заменить их переводом строки.

Что-то вроде этого, хотя регулярные выражения будут должен быть более сложным, если вам нужно обрабатывать квадратные скобки в значениях вроде [more]

replace(replace(normalize-space(description), '\[', '&#xa;'), '\]:','')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...