Domanda

Qualcosa come .//div[@id='foo\d+] per acquisire tag div con id = 'foo123' .

Sto usando .NET, se questo è importante.

È stato utile?

Soluzione

Come notato da altre risposte, XPath 1.0 non supporta le espressioni regolari .

Tuttavia, hai le seguenti opzioni :

.//div
   [starts-with(@id, 'foo') 
  and 
   'foo' = translate(@id, '0123456789', '')
  and
   string-length(@id) > 3   
   ]

Altri suggerimenti

XPath 2.0 ha alcune funzioni che supportano le espressioni regolari: match () , replace () , tokenize () .

In XPath 1.0 non esiste il supporto regex.

Per .NET è possibile utilizzare il motore XPath in Saxon.Net per avere il supporto XPath 2.0.

Quindi, se si utilizza il motore XPath 2.0 in Saxon.NET, l'esempio si trasformerebbe in: .//div[matches(@id,'foo\d+ ')] .

In .NET hai la possibilità di accedere alle tue classi personalizzate (e quindi regex se puoi codificarlo in modo appropriato per le tue esigenze) tramite Extension Objects.

Tutorial qui .

Volevo anche farlo, quindi ho creato il mio modulo xpath .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top