| | | | |
| |||||||
| PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen |
|
| | LinkBack | Themen-Optionen | Thema bewerten |
| | |
| PHP Code Flüsterer Registriert seit: 21.08.2005 Beiträge: 4682 PHP-Kenntnisse: Fortgeschritten | |
| | |
| moderatives Dielektrikum Registriert seit: 21.05.2008
Beiträge: 34.255
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | Nee, wie gesagt, das "\n {Einrückung}" wirkt bspw. für das erste <leave> auch als DOMText-Knoten als firstChild. Außer man benutzt eben PHP-Code: Mit der in #2 geposteten Variante funktionierts aber. Und ich vermute mal, Objektvergeliche via === sind jetzt nicht sooo teuer, oder?
__________________ -- One pixel is still too big. Please make it smaller. ASAP. Initiative Mittelstand. Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers. -- |
| | |
| | |
| Erfahrener Benutzer Registriert seit: 14.06.2009
Beiträge: 1.579
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() ![]() | Ich finde die Idee gut. Es gäbe noch isSameNode. Keine Ahnung, ob das schneller ist. PHP-Code: |
| | |
| | |
| Erfahrener Benutzer Registriert seit: 21.12.2009
Beiträge: 379
PHP-Kenntnisse: Fortgeschritten ![]() | Ist zu lange her, dass ich das letzte Mal mit DOM gearbeitet hab...aber mal so eine fixe Idee - ein Text-Node dürfte ja eigentlich keine Kinder mehr haben, also solltest du ja mit hasChildNodes dran kommen. Da die Whitespaces aber ebenfalls drunter fallen würden fiele mir spontan ein Check auf den Node-Namen ein, dieser müsste entweder leer sein oder sehr generisch, so dass man hier ggfls. ausfiltern könnte. Vielleicht hilft aber auch DOMText::isWhitespaceInElementContent.
__________________ actra.development - Schwabstr. 2 - 70825 Münchingen www.actra.de/velopment/ - eMail: php.de@actra.de Zend Certified Engineer for PHP5 |
| | |
| | |
| moderatives Dielektrikum Registriert seit: 21.05.2008
Beiträge: 34.255
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | Stimmt, an den Nodenamen des ersten Elements habe ich nicht gedacht. Das geht vielleicht auch. DOMText::isWhitespaceInElementContent brimgt mich für einen anderen Zweck weiter. Thx.
__________________ -- One pixel is still too big. Please make it smaller. ASAP. Initiative Mittelstand. Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers. -- |
| | |
| | |
| Erfahrener Benutzer Registriert seit: 12.01.2009
Beiträge: 345
PHP-Kenntnisse: Fortgeschritten ![]() | Mit XPath kannst du über den XSLT-Processor überprüfen, wie viele childNodes vorhanden sind, siehe count(). Des weiteren kannst du die Abfrage noch weiter vereinfachen, wenn du auf XSLT setzt, indem du einfach den Text aus den Suchausdrücken "//inner" oder "//second" mit Hilfe von Code: <xsl:for-each select="//inner|//second"> <xsl:value-of select="text()" /> </xsl:for-each>
__________________ Kreativität und Schöpfung durch Chaos und Ordnung. Geändert von leonv (10.03.2010 um 13:41 Uhr). |
| | |
| | |
| moderatives Dielektrikum Registriert seit: 21.05.2008
Beiträge: 34.255
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | Gebenchmarkt ist das falsche Wort, aber ich habe hier ne 22MB Datei (420000 Zeilen), bei der ich unter anderem dieses Verfahren anwende, um jeden Knoten via trim zu behandeln. Ohne Ausgaben (denn dann wirds fett) wird die innerhalb von knapp ner Minuten DOM-geladen, rekursiv verarbeitet und in eine neue Datei zurückgeschrieben. Wie gesagt, da passieren aber noch andere Dinge nebenbei. Über Kommandozeile (späterer Anwendungszweck) unter Windows sogar nur 46 Sekunden. XPath, auch @leonv, ist IMHO wesentlich aufwendiger für den XML-Parser, weil XPath ja bis auf die Attributebene und mit generischen Pfaden (:first etc.) arbeitet. Da ist rekursives DOM wohl wesentlich schneller, vor allem wenn man viele Knoten auswerten muss. Und XSLT wird vermutlich noch schlimmer skalieren. Zumal ich DOM ja sowieso nutze, dann kann ich auch die ohnehin bestehenden Objekte verwenden.
__________________ -- One pixel is still too big. Please make it smaller. ASAP. Initiative Mittelstand. Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers. -- Geändert von nikosch (10.03.2010 um 18:32 Uhr). |
| | |
|
| Themen-Optionen | |
| Thema bewerten | |
|
|
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Eine Workflow-Engine | mepeisen | Software-Design | 6 | 27.10.2009 07:07 |
| Genauen Datentyp des Rückgabewerts der Funktion Count bestimmen | Bloedi | Datenbanken | 5 | 25.08.2008 18:58 |
| Position einer zeile in einer sortierten tabelle bestimmen | Drache | Datenbanken | 9 | 17.06.2007 10:45 |
| Besucher kamen über folgende Suchanfragen bei Google auf diese Seite |
| php domdocument leere nodes, php domelement text ohne, php domdocument leer, php dom innertext, knoten kinder, has_child_nodes()===true, xslt knoten ohne kinder, node bestimmten type ermitteln, dom abstand zwischen knoten bestimmen, xsl anzahl kinder bestimmen, xslt dom-knoten, php dom node leer, php domdocument innertext, dom inhalt von knoten ohne kinder, javascript position im dom baum bestimmen, javascript checknode(), php dom schneller ,machen, http://www.php.de/php-fortgeschrittene/65490-dom-knoten-ohne-zechtea-oe-kinder-bestimmen.html, instanceof domtext, mermshaus domdocument |