2010-06-25 6 views
0

J'utilise XQuery pour extraire le contenu des pages html. La structure du corps html est de ce genre:Xquery analyse le texte avec <a> tags

<td> 
     <a href ="hw1">xyz </a> 
      Hello world 1 
     <a href="hw2">Helloworld 2</a> 
      Helloworld 3   
</td> 

Mon expression XQuery pour extraire le texte comme suit:

//a[starts-with(@href,'hw1')]/following-sibling::text() 

Cette expression me donne:

Helloworld 1 Helloworld 2 Helloworld 3

Je voudrais l'avoir de cette façon: Helloworld 1 Helloworld 2 Helloworld 3 ou Helloworld 1 Helloworld 3

Comment puis-je spécifier pour analyser le texte ci-joint par tags

+0

Je n'ai pas beaucoup travaillé avec XQuery, donc quelqu'un de plus expérimenté devra m'aider. Cependant, vous avez un tag 'a' imbriqué, ce qui n'est pas autorisé en HTML. Cela peut faire partie du problème. – Mike

+0

Est-il également possible d'obtenir la sortie en tant que Helloworld 1 Helloworld 2 Helloworld 3 – Technocrat

+0

Oups J'ai égaré l'étiquette. Désolé. xyz Bonjour tout le monde 1 Helloworld 2 Helloworld 3 – Technocrat

Répondre

0

Je ne suis pas vraiment clair ce que vous cherchez, mais

let $content := 
<td> 
     <a href ="hw1">xyz </a> 
      Hello world 1 
     <a href="hw2">Helloworld 2</a> 
      Helloworld 3   
</td> 

return $content/text() 

vous donne les nœuds de texte directement sous la <td>. Je ne vois pas de différence entre ce que vous obtenez et ce que vous voulez ... peut-être que votre message a perdu son formatage?

Questions connexes