php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 04.10.2011, 12:14  
Benutzer
 
Registriert seit: 25.03.2011
Beiträge: 32
PHP-Kenntnisse:
Fortgeschritten
shimu befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Probleme mit SimpleXML und *.docx

Hallo Leute!

Ich versuche momentan mit PHPWord (dem kleinen Bruder von PHPExcel) Word Dateien zu manipulieren. Die vorgefertigten Funktionen und Klassen sind auch kein Problem, die funktionieren gut. Allerdings möchte ich die Template Klasse etwas erweitern damit ich darin auch eine Tabellenzeile kopieren kann.
Für den Start versuche ich es mal damit, mir die document.xml über SimpleXML als Objekt übergeben zu lassen. (Soweit ich das bis jetzt gesehen habe, arbeitet zumindest die Template Klasse nicht mit SimpleXML sondern mit Stringmanipulationen.) Der String wird intern in der Klasse auf _documentXML gespeichert. Um jetzt mein Objekt zu bekommen habe ich versucht die Methode simplexml_load_string zu benutzen. Wenn ich mir dann das Objekt als XML ausgeben lassen will funktioniert das auch wunderbar. Aber wenn ich dann durch die XML Datei traversieren will geht es nicht. In der foreach Schleife werden keine children gefunden... . Jemand eine Idee woran das liegen kann?

Hier noch der Code:
PHP-Code:
$sxml simplexml_load_string($this->_documentXML);
echo 
$sxml->asXML();

foreach (
$sxml->children() as $child)
{
    echo 
$child->getName()."<br>";

so long
shimu
shimu ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 04.10.2011, 13:32  
Erfahrener Benutzer
 
Benutzerbild von jspit
 
Registriert seit: 19.08.2011
Beiträge: 701
PHP-Kenntnisse:
Anfänger
jspit wird schon bald berühmt werden
Standard

Speicher anstelle des echo deine xml in eine Datei und schau sie dir mit einem vernünftigen Editor an. Ohne deine xml zu kennen wird keiner helfen können.
jspit ist offline   Mit Zitat antworten
Alt 04.10.2011, 14:53  
Benutzer
 
Registriert seit: 25.03.2011
Beiträge: 32
PHP-Kenntnisse:
Fortgeschritten
shimu befindet sich auf einem aufstrebenden Ast
Standard

Die Datei die ich bearbeiten will ist im Anhang als document.txt (ist nur deswegen eine txt Datei, weil ich keine xml Datei hochladen kann). Sie ist aber etwas zu groß als das ich sie hier in meinem Post noch reingeben will.
Hier ist die Ausgebe in meinem debug.txt file:
Code:
SimpleXMLElement::__set_state(array(
))
Hier der Code (hab jetzt versucht als DOMDocument zur XML Datei zu kommen):
PHP-Code:

        $bool 
$this->_objZip->extractTo('./xml','word/document.xml');
        if(
$bool)   {
            
$dom = new DOMDocument();
            
$dom->load('.\\xml\\word\\document.xml');
            
$sxml simplexml_import_dom($dom);
        }

        
$fh fopen('debug.txt','a+');
        
fwrite($fh,var_export($sxml,true));
        
fclose($fh); 
Angehängte Dateien
Dateityp: txt document.txt (17,2 KB, 18x aufgerufen)
Dateityp: txt debug.txt (39 Bytes, 9x aufgerufen)
shimu ist offline   Mit Zitat antworten
Alt 04.10.2011, 15:50  
Erfahrener Benutzer
 
Benutzerbild von jspit
 
Registriert seit: 19.08.2011
Beiträge: 701
PHP-Kenntnisse:
Anfänger
jspit wird schon bald berühmt werden
Standard

Hier in der Docu von simplexml_load_file ist ein Hinweis der weiterhelfen könnte.
jspit ist offline   Mit Zitat antworten
Alt 04.10.2011, 17:16  
Benutzer
 
Registriert seit: 25.03.2011
Beiträge: 32
PHP-Kenntnisse:
Fortgeschritten
shimu befindet sich auf einem aufstrebenden Ast
Standard

Danke, jetzt weiß ich wieso es nicht funktioniert.

Hab mich entschlossen das ich auf Stringmanipultion zurückgreife. Wird im PHPWord sowieso fast überall verwendet... .

Nochmals danke.
shimu

EDIT: Bin jetzt nochmal über die Kommentare drübergegangen. Ich werds doch so probieren. Falls ich damit erfolg hab poste ich es hier noch mal rein.

Geändert von shimu (04.10.2011 um 17:52 Uhr).
shimu ist offline   Mit Zitat antworten
Alt 05.10.2011, 00:24  
Erfahrener Benutzer
 
Benutzerbild von tr0y
 
Registriert seit: 26.07.2010
Beiträge: 4.874
PHP-Kenntnisse:
Fortgeschritten
tr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblick
tr0y eine Nachricht über MSN schicken
Standard

Du kannst nix traversieren dessen Namespace nicht an SimpleXML registriert wurde. Hängt damit zusammen das du in SimpleXML die möglichkeit haben sollst, entsprechend dem oder der registrierten Namespaces, Tags in dessen Namensraum isoliert zu traversieren. Wenn in deinem aktuell registrierten Namespace-Scope halt kein Namespace vorhanden ist aber dennoch Tags durchgehend mit Namespace benannt wurden, haste halt nix was du traversieren kannst.

Die XPATH-Methode allerdings infiltriert die ganze XML und lässt auch traversion über nicht-registrierte namespaces zu, nebst Kindelemente. ( '/.../.../.../child::*' ) Bringt dich allerdings weniger weiter wenn du folge-Stages der XML im nachhinein traversierst. Dort solltest du dann erneut mit XPATH ansetzen.
__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.

Geändert von tr0y (05.10.2011 um 00:30 Uhr).
tr0y ist gerade online   Mit Zitat antworten
Alt 05.10.2011, 09:05  
Benutzer
 
Registriert seit: 25.03.2011
Beiträge: 32
PHP-Kenntnisse:
Fortgeschritten
shimu befindet sich auf einem aufstrebenden Ast
Standard

Hmm... . So ganz versteh ich das jetzt noch nicht. Heißt das, dass ich mit der SimpleXML Methode xpath arbeiten kann? Probiert hab ich es schon, aber funktioniert hat es noch nicht... . Oder meinst du eine andere Möglichkeit mit XPath zu arbeiten?
Bin leider im Bereich XML nicht besonders fit, das hier ist meine erste wirkliche Bekanntschaft damit
shimu ist offline   Mit Zitat antworten
Alt 05.10.2011, 09:09  
Erfahrener Benutzer
 
Benutzerbild von jspit
 
Registriert seit: 19.08.2011
Beiträge: 701
PHP-Kenntnisse:
Anfänger
jspit wird schon bald berühmt werden
Standard

Ich lande mit XPath (mit deinem Beispiel) an der richtigen Stelle, sehe aber keine Möglichkeit auf Werte oder Attribute zuzugreifen. Die XML-Elemente sind alle leer.
jspit ist offline   Mit Zitat antworten
Alt 05.10.2011, 10:18  
Benutzer
 
Registriert seit: 25.03.2011
Beiträge: 32
PHP-Kenntnisse:
Fortgeschritten
shimu befindet sich auf einem aufstrebenden Ast
Standard

Hab es jetzt auch hingekriegt, dass ich an die gewünschte Stelle komme (hab den ns nicht mitangegeben). Leider sind im Array aber wieder nur SimpleXMLElement Objekte die leer sind. Wenn ich dann aber auf die einzelnen Objekte z.B. die Methode asXML() anwende bekomme ich meine Daten wie ich sie will.
Bin gerade noch dabei herauszufinden wie ich jetzt einen neuen Knoten in mein XML File rein bekomme. Hat da schon jemand Erfolg gehabt?
shimu ist offline   Mit Zitat antworten
Alt 05.10.2011, 10:36  
Erfahrener Benutzer
 
Benutzerbild von jspit
 
Registriert seit: 19.08.2011
Beiträge: 701
PHP-Kenntnisse:
Anfänger
jspit wird schon bald berühmt werden
Standard

Mit "richtigen" XMLs kein Problem. Für den vorliegenden Fall wäre mir die Nutzung von SimpleXML zu unsicher.
jspit ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
php / mysql Probleme bei Umstieg von php 5.2 auf 5.3 Gerhard76 PHP Einsteiger 10 21.09.2011 12:58
Probleme mit der COM Verbindung shimu PHP-Fortgeschrittene 12 01.08.2011 12:47
Probleme mit Word Lollix Off-Topic Diskussionen 2 26.03.2010 11:52
CHarset und Probleme mit IE KeKs0r HTML, Usability und Barrierefreiheit 10 26.01.2010 21:59
SimpleXML: Doppelpunkt im Elementnamen swmsherl PHP Tipps 2008 2 01.06.2008 18:03
Probleme bei Speicherung von serialize() Strings Manni2k PHP Tipps 2006 13 15.10.2006 15:06
Probleme mit mbstring extension unter Debian HStev Server, Hosting und Workstations 3 30.08.2006 20:55
Probleme mit Rechteverteilung chmod() per script!!!??? Funky_ PHP Tipps 2006 7 17.06.2006 17:10
Probleme bei der Installation von Turck MMCache tomx992 PHP-Fortgeschrittene 2 27.09.2005 20:31
[Erledigt] XML mit simplexml und xpath in HTML umwandeln PHP-Fortgeschrittene 3 15.07.2005 01:39
[Erledigt] CSV Größe macht Probleme mit php PHP Tipps 2005 5 15.03.2005 21:29
Zwei Rechner ins Netz - Router - Hub - Probleme... imported_Ben Off-Topic Diskussionen 37 13.01.2005 21:36
[Erledigt] XML Verarbeitung mit SimpleXML PHP5 PHP-Fortgeschrittene 1 29.12.2004 11:22
[Erledigt] Technische Probleme mit Sessions PHP-Fortgeschrittene 4 18.11.2004 14:45
SimpleXML: Name des Root-Tags Quadaptor PHP-Fortgeschrittene 12 11.09.2004 22:49

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php docx simplexml, docx from simple xml, docx to simplexml, \phpword\ installieren, php xml word docx, \phpword\ template mit tabellen tabellen, php simplexml und word, simplexmlelement .docx, php serialize with simplexml support, php download problemmit docx, php docx xml textmarke, __set_state var_export simplexmlelement, docx schreiben & php, nicht registrierte namespaces, docx php, simplexml_load_file problem leer, simplexml ist leer, xml dom docx php, simplexml klasse

Alle Zeitangaben in WEZ +2. Es ist jetzt 01:10 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum