Html Code parsen
Html Code parsen
Hallo,
ich würde gerne für ein kleines Projekt Qt4 einsetzen. Da ich sehr viel Html code parsen muss wollte ich euch fragen wie leicht oder schwer es ist sowas mit Qt4 zu bewerkstelligen.
Vielleicht kann mir jemand auch sagen welche Klassen dafür benötigt werden. Aber es sollte schon alles in Qt4 oder reinem C++ gemacht werden damit es Plattform unabhänig ist.
Gruß
Treehouse
PS: Vielleicht wenn es nicht all zuviel mühe bereitet wäre ein kleines Beispiel schön.
ich würde gerne für ein kleines Projekt Qt4 einsetzen. Da ich sehr viel Html code parsen muss wollte ich euch fragen wie leicht oder schwer es ist sowas mit Qt4 zu bewerkstelligen.
Vielleicht kann mir jemand auch sagen welche Klassen dafür benötigt werden. Aber es sollte schon alles in Qt4 oder reinem C++ gemacht werden damit es Plattform unabhänig ist.
Gruß
Treehouse
PS: Vielleicht wenn es nicht all zuviel mühe bereitet wäre ein kleines Beispiel schön.
-
PeterLustig
- Beiträge: 386
- Registriert: 21. November 2007 20:07
Ich verweise mal Dezent auf die Suchfunktion. Suche dort nach "Html Parsen" und du findest Antworten.
Re: Html Code parsen
Html ist nicht immer HTML code wenn du XHTML resultate moechtestTreehouse hat geschrieben:Hallo,
ich würde gerne für ein kleines Projekt Qt4 einsetzen. Da ich sehr viel Html code parsen muss wollte ich euch fragen wie leicht oder schwer es ist sowas mit Qt4 zu bewerkstelligen.
.
dann fuege den ganzen code in einen QTextDocument
QTextDocument *doc = new QTextDocument();
doc->setHtml(html);
Dann ist es moeglich jedes einzelne bild tabelle oder was sonst zu sortieren oder in andere formate zu bringen wie xsl-fo openoffice u.n.s.w.
dann kann man das dokument parsen und bearbeiten wie...
http://doc.trolltech.com/4.0/richtext-structure.html
wie das ganze wieder html wird sieht man bei:
http://www.bessrc.aps.anl.gov/software/ ... ource.html
Code: Alles auswählen
/* die rootFrame hat im grunde der body des dokument
das mann mit einem iterator durchparsen kann */
FrameLoop(doc->rootFrame()->begin(),body); /* body ist teil von einem xml */
void QdocXhtml::FrameLoop( QTextFrame::Iterator frameIt , QDomElement appender )
{
BigframeProcessing++;
if (!frameIt.atEnd()) {
QTextFrame::Iterator next = frameIt;
++next;
if (next.atEnd() && frameIt.currentFrame() == 0 &&
frameIt.parentFrame() != doc->rootFrame() &&
frameIt.currentBlock().begin().atEnd()) {
/* ende dokument */
return;
}
}
for (QTextFrame::Iterator it = frameIt; !it.atEnd(); ++it) {
if (QTextFrame *f = it.currentFrame()) {
if (QTextTable *table = qobject_cast<QTextTable *>(f)) {
/* table here */
HandleTable(table,appender); /* tabelle bearbeiten */
} else {
/* other simple table from QTextDocument like <div> htmls */
QTextFrameFormat format = f->frameFormat();
QDomElement inlinediv = dom.createElement("var");
PaintFrameFormat(inlinediv,format);
appender.appendChild(inlinediv);
/* naechter frame block */
FrameLoop(f->begin(),inlinediv);
}
} else if (it.currentBlock().isValid()) {
/* normaler paragraph */
HandleBlock(it.currentBlock(),appender);
}
}
}
So bringe ich nur das notwendigste raus beisbiel:
http://fop-miniscribus.googlecode.com/s ... cxhtml.cpp
http://fop-miniscribus.googlecode.com/s ... docxhtml.h
Das dokument bearbeiten beispiel im code:
http://www.qt-apps.org/content/show.php ... tent=80234
oder ganz einfach ....
http://www.wysota.eu.org/wwwidgets/doc/ ... tedit.html
http://www.wysota.eu.org/wwwidgets/
.........................
speack português italiano deutsch english castellà qt
speack português italiano deutsch english castellà qt
Wenn du den aufbau des HTML dokumentes kennst ....
html ist nur speziellere Form von xml ...
sich in nem DomDocument durchnavigieren ist total easy ...
Teile (DomNodes) aus nem document ausschneiden und bearbeiten ist noch easier ...
selbst mit nem SAX sollt es recht einfach gehen ....
die Frage ist eher was genau (und wie performant) du machen willst, um mit html zu operieren gibts halt viele möglichkeiten, also sollte dein Ziel scho auf die wegfindung einfluss nehmen ...
Ciao ...
html ist nur speziellere Form von xml ...
sich in nem DomDocument durchnavigieren ist total easy ...
Teile (DomNodes) aus nem document ausschneiden und bearbeiten ist noch easier ...
selbst mit nem SAX sollt es recht einfach gehen ....
die Frage ist eher was genau (und wie performant) du machen willst, um mit html zu operieren gibts halt viele möglichkeiten, also sollte dein Ziel scho auf die wegfindung einfluss nehmen ...
Ciao ...
-
PeterLustig
- Beiträge: 386
- Registriert: 21. November 2007 20:07
HTML ist KEINE Form von XML! XHTML ist eine Form von XML, aber nicht HTML.RHBaum hat geschrieben:Wenn du den aufbau des HTML dokumentes kennst ....
html ist nur speziellere Form von xml ...
Ein Beispiel: <img src="bla.."><br>
Das ist valides HTML, aber in XML würde der Parser dich rausschmeißen, da du zwei Tags öffnest, sie aber nie schließt.
Bitte informiere dich erst richtig, bevor du solche Halbwahrheiten oder falsche Informationen verbreitest.
Code: Alles auswählen
html ist nur speziellere Form von xml ...HTML: 1989
XML: 1998
XHTML: 2000
-
PeterLustig
- Beiträge: 386
- Registriert: 21. November 2007 20:07