Je suis un nouveau venu sur XPath.
Je cherche un moyen d'obtenir tous les éléments dont le nom de balise contient une chaîne particulière.
Par exemple, si j'ai le code XML comme ci-dessous, je souhaite obtenir tous les éléments dont le nom de balise contient le mot "Nom". c'est-à-dire que je veux récupérer les éléments suivants: <SquareName>
, <RectangleName>
et <ParallelogramName>
.
J'ai essayé quelques combinaisons de name()
, contains()
etc., mais cela n'a pas fonctionné . Merci de le suggérer.
<Objects>
<Four-Sided>
<Square>
<SquareName>ABCD</SquareName>
<Length>4</Length>
<Height>4</Height>
<Colour>Blue</Colour>
</Square>
<Rectangle>
<RectangleName>EFGH</RectangleName>
<Length>10</Length>
<Height>6</Height>
<Colour>Brown</Colour>
</Rectangle>
<Parallelogram>
<ParallelogramName>WXYZ</ParallelogramName>
<Length>12</Length>
<Height>4</Height>
<Colour>Black</Colour>
</Parallelogram>
</Four-Sided>
</Objects>
Pour une solution XPath:
//*[contains(local-name(), 'Name')]
Puisqu'il n'y a pas de préfixe d'espace de noms, vous pouvez également utiliser
//*[contains(name(), 'Name')]