1
votes

Comment extraire des parties de texte avec XPath?

Je veux extraire des mots (texte) d'un exemple XML donné:

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

comme ceci:

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

Quel chemin x exactement puis-je utiliser pour ce résultat?


0 commentaires

3 Réponses :


0
votes

XPath vous donnera l'élément de description, puis vous pouvez utiliser le remplacer pour supprimer les crochets ou les remplacer par des sauts de ligne.

Quelque chose comme ça, bien que les expressions régulières devront être plus compliquées si vous devez gérer les crochets dans les valeurs comme [plus]

replace(replace(normalize-space(description), '\[', '&#xa;'), '\]:','')


0 commentaires

1
votes

Vous pouvez utiliser fn: replace () fonction avec un groupe de capture de regex:

replace(/description, "\[(.*?)\]:", "&#10;$1")


2 commentaires

Ok, mais j'ai besoin d'extraire ces champs via WP All Import dans les attributs woocommerce, j'ai besoin d'une clé pour le premier mot et d'une valeur pour le second, c'est mon GROS problème ...


@chrisbg: Puisque vous n'avez rien demandé sur les paires attribut-valeur, vous devriez publier une nouvelle question plutôt que d'essayer d'étendre celle-ci dans les commentaires. Et vous devriez voter pour / accepter les réponses ici en fonction de ce que vous avez réellement demandé. Merci.



1
votes

Une autre façon de le faire avec XPath 2.0:

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

Sortie:

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


2 commentaires

Super, je dois les mettre dans les attributs woocommerce en tant que paire clé: valeur. Qu'est-ce que xPath pour le premier et le deuxième mot?


@chrisbg: Encore une fois, veuillez poster une nouvelle question avec cette nouvelle demande, et voter pour / accepter ces réponses en fonction de la question réellement posée. Merci.