mister_0101 Δημοσ. 25 Ιουλίου 2005 Δημοσ. 25 Ιουλίου 2005 Έχω ένα ΗΤΜL αρχείο που περιέχει εγγραφές της μορφής: > ... <td class="blah blah">blah blah</td> ... <td class="number1">12</td> <td class="number2">14</td> ... <td class="blah blah..">blah blah..</td> ... <td class="number1">132</td> <td class="number2">122</td> ... <td class="blah blah...">blah blah...</td> ... <td class="number1">112</td> <td class="number2">111</td> ... Αυτό που θέλω να κάνω είναι να αναγνωρίζω ένα συγκεκριμένο class name που στην περίπτωση μου είναι τα: "number1" και "number2" και να διαβάζω τις τιμές που περιέχονται ανάμεσα στα > .. </ δηλ. > <td class="number2">ΤΙΜΗ</td> Ακόμα καλύτερα αν μπορούσα να διαβάσω τις τιμές σειραϊκά, δηλ. διαβαζω την 1η τιμη απο class "number1" και την 1η τιμή απο class "number2" και μετα την 2η τιμη απο class "number1" και την 2η τιμή απο class "number2" κ.ο.κ.. H ανάγνωση των τιμών αυτών είναι ενα κομμάτι απο μια εφαρμογή που γράφω με C σε GNU/Linux και μόνο. Δυστηχώς δεν ξέρω perl ουτε HTML αλλά λόγω της φύσεως της εφαρμογής πρέπει να είναι σε C/C++. Ουσιαστικά αυτό που θέλω είναι να αποφύγω να γράψω δικές μου ρουτίνες επεξεργασίας string, με την βοήθεια συναρτήσεων των C headers "string.h" και "ctype.h" οπότε ψάχνω για κάποιο έτοιμο tool που κάνει την αυτό που ζητάω ή από οτι έχω καταλάβει χρειάζομαι κάποια HTML parsing library για C/C++ ? Έχω βρει την παρακάτω εφαρμογή και από οτι έχω καταλάβει εγω χρειάζομαι το ακριβως αντίθετο: http://www.w3.org/Tools/HTML-XML-utils/man1/htmlprune.html Μπορείτε να μου προτείνετε κατι ? (εκτός του sed utility )
Jacaranda Bill Δημοσ. 25 Ιουλίου 2005 Δημοσ. 25 Ιουλίου 2005 Αυτό που περιγράφεις γίνεται πολύ εύκολα με την χρήση regular expressions. Σε Perl ή PHP είναι πολύ εύκολο να το υλοποιήσεις. Σε C/C++ δεν ξέρω πως λέγεται η βιβλιοθήκη για RE. Ισως κάποιος C/C++ coder να μπορεί να μας το διευκρινήσει;
mister_0101 Δημοσ. 25 Ιουλίου 2005 Μέλος Δημοσ. 25 Ιουλίου 2005 Αυτό που περιγράφεις γίνεται πολύ εύκολα με την χρήση regular expressions. Σε Perl ή PHP είναι πολύ εύκολο να το υλοποιήσεις. Σε C/C++ δεν ξέρω πως λέγεται η βιβλιοθήκη για RE. Ισως κάποιος C/C++ coder να μπορεί να μας το διευκρινήσει; Iparxoun kai stin C regular expression functions. Diavasa oti afto pou zitaw ginete kai etsi tha tou riksw mia matia.
Jacaranda Bill Δημοσ. 26 Ιουλίου 2005 Δημοσ. 26 Ιουλίου 2005 Οκ, επομένως το μόνο που έχεις να κάνεις είναι δεις πως πρέπει να τις χρησιμοποιήσεις. Είμαι σίγουρος ότι οι Regular Expressions της C/C++ θα είναι Perl style. Ισως λοιπον να βοηθάει η παρακάτω rex: "/<td class=\"myclass\">(.*?)<\/td>/i"; Έτσι θα έγραφα την έκφραση σε PHP. To i στο τέλος είναι για να γίνει η αναζήτηση case-insensitive ενώ τα (.*?) στην μέση επιστρέφουν οτιδήποτε υπάρχει ανάμεσα στo tag. Η παρακάτω regular expression θα πρέπει να σου επιστρέψει σε κάποιον πίνακα όλα τα αποτελέσματα. Κάθε αποτελέσμα θα περιέχει ΚΑΙ τα tags. Είναι όμως εύκολο με 2-3 string functions να πάρεις μόνο το κείμενο που σε ενδιαφέρει.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.