Peut-être que c'est Nitpicky, mais je dois demander.
J'utilise Nokogiri pour analyser XML, supprimez certaines balises et écrivez sur le fichier d'origine avec les résultats. Utilisation de Voici ce que j'ai: p> .Remove code> laisse des lignes vides dans le XML. J'utilise actuellement une regex pour vous débarrasser des lignes vides. Y a-t-il une méthode Nokogiri intégrée que je devrais utiliser? P>
3 Réponses :
Il n'y a pas de méthodes intégrées, mais nous pouvons ajouter un
Ça ne marche pas pour moi .. :( J'ai essayé Ici , mais il n'a pas supprimé ces lignes vides, alors j'ai supprimé cette partie de la réponse. Toute aide?
Faire une substitution sur chaque noeud de texte n'a pas fonctionné pour moi non plus. Le problème est que après avoir retiré les nœuds, les nœuds de texte qui vient de devenir adjacents ne se font pas fusionné. Lorsque vous en boucle sur les nœuds de texte, chacun n'a qu'une seule nouvelle ligne, mais il y en a maintenant plusieurs d'une rangée.
Une solution plutôt désordonnée que j'ai trouvée était de répéter le document: P>
xml = Nokogiri::XML.parse xml.to_xml
Ceci a supprimé les lignes vides pour moi;
doc.xpath('//text()').find_all {|t| t.to_s.strip == ''}.map(&:remove)
Vous pouvez simplement utiliser ... chacun (et: supprimer) code> car vous n'êtes pas intéressé par le résultat final.
Je ne connais pas une méthode utilisant Nokogiri, mais je peux vous dire que votre expression régulière est fausse. Il ne retirera que des lignes blanches simples, pas plusieurs lignes blanches consécutives. Je pense que cela fonctionnera mieux: gsub (/ ^ \ s * \ n /, "")
Ah. Bon point. Jusqu'à présent, je n'ai eu que de traiter avec des lignes blanches simples (même si le nœud prend plusieurs lignes), de sorte que cela fonctionne bien. Peut-être que si je modifie le script pour éliminer plusieurs lignes, cela ne fonctionnera plus. Merci d'avoir souligné cela.