2011-05-05 1 views
0

J'ai une question sur l'analyse de document XML avec XPATH dans Ruby.Boucle dans un document XML avec XPATH et Ruby

Une petite partie de mon XML:

... 
<Row> 
    <Cell ss:StyleID="s248"><Data ss:Type="String">Picardie</Data></Cell> 
    <Cell ss:Index="4" ss:StyleID="s28"/> 
</Row> 
<Row> 
    <Cell ss:StyleID="s249"><Data ss:Type="String"><Font html:Color="#0000D4" 
    xmlns="http://www.w3.org/TR/REC-html40">80 Somme</Font></Data></Cell> 
    <Cell ss:Index="3" ss:StyleID="s30"/> 
    <Cell ss:StyleID="s28"/> 
</Row> 
<Row> 
    <Cell ss:StyleID="s250"><Data ss:Type="String"><Font html:Color="#DD0806" 
    xmlns="http://www.w3.org/TR/REC-html40">André</Font></Data></Cell> 
    <Cell ss:Index="3" ss:StyleID="s30"/> 
    <Cell ss:StyleID="s28"/> 
</Row> 
<Row> 
    <Cell ss:StyleID="s36"><Data ss:Type="String">23, rue des Lingers </Data></Cell> 
    <Cell ss:StyleID="s36"><Data ss:Type="String">80100 ABBEVILLE</Data></Cell> 
    <Cell ss:StyleID="s38"><Data ss:Type="String">'</Data></Cell> 
</Row> 
<Row ss:StyleID="s82"> 
    <Cell ss:StyleID="s49"><Data ss:Type="String">32, rue des Trois Cailloux</Data></Cell> 
    <Cell ss:StyleID="s49"><Data ss:Type="String">80000 AMIENS</Data></Cell> 
    <Cell ss:StyleID="s48"><Data ss:Type="String">03.22.22.01.66</Data></Cell> 
    <Cell ss:StyleID="s85"/> 
</Row> 
... 

ouput désiré:

... 
'Picardie' '80 Somme' 'André' '23, rue des Lingers' '80100 ABBEVILLE' 
'Picardie' '80 Somme' 'André' '32, rue des Trois Cailloux' '80000 AMIENS' '03.22.22.01.66' 
... 

Avez-vous une idée?

+0

Quel est le critère pour le début et la fin d'un ensemble de données? Y a-t-il un élément entourant les rangées d'un ensemble? – ceving

Répondre

0

Nokogiri est tout à fait un outil standard pour ce poste:

http://nokogiri.org/

Voici un exemple de la documentation:

# Search for nodes by xpath 
doc.xpath('//h3/a[@class="l"]').each do |link| 
    puts link.content 
end 

Désolé, je suis au travail, donc je ne avoir le temps de vous donner un extrait spécifique à votre problème, mais je suis sûr que vous pouvez le comprendre à partir des docs et le court exemple :-)

0

This Xpath //set//*[not(descendant::*)]/text() vous donnera la liste des éléments de texte dans un ensemble de lignes. Vous devez remplacer "set" par le nom de votre nœud parent des lignes.

+0

Merci. Ça marche –

Questions connexes