domxml

Irgendwelche Probleme mit XAMPP für Windows? Dann ist hier genau der richtige Ort um nachzufragen.

domxml

Postby vsmfoxx » 20. March 2008 20:51

hallo,
ich habe probleme mit der "domxml" extension.
hab die php.ini im vz C:\xampp\apache\bin entsprechend bearbeitet (simikolon entfernt) und
php über controll panel gestoppt und neu gestartet.
xampp version 1.6.5 PHP 5.2.5 windows xp sp2 wird genutzt.

jedoch wenn ich mein script ausführe kommt es zur fehlermeldung:

Warning: domnode::append_child() expects parameter 1 to be object, null given in C:\xampp\htdocs\www\20080318.xml_parser\xml.php on line 4

Fatal error: Call to a member function append_child() on a non-object in C:\xampp\htdocs\www\20080318.xml_parser\xml.php on line 5


Code: Select all
$dom = domxml_open_file('code.xml');

$authors = $dom->get_element_by_tagname('author');
foreach ($authors as $author){
  $text_nodes = $author->child_nodes();
  foreach ($text_nodes as $text){
      print $text->node_value();
  }
}



oder

Code: Select all
$book = $dom->append_child($dom->create_element('book'));
$title = $book->append_child($dom_create_element('title'));
$title->append_child($dom->create_text_node('PHP Cookbook'));
$title->set_attribute('cover','soft');
echo $dom->dump_mem(true);


Kann mir einer sagen was ich falsch mache? es kann eigentlich nicht an den scripten liegen. Hab schon alles mögliche gegoogle´d
es gibt kein thread dazu der zuende geführt wurde... :-\
wie hier:
http://www.developers-guide.net/forums/764,dom-xml

ziel: ich mochte gerne bestimme inhalte einer xml datei auslesen wie hier zb author... bzw nur "author" !!!


[code]
<?xml version="1.0" encoding="iso-8859-1"?>
<books>
<book>
<title>Php Coodebook</title>
<author>Sklar</author>
<author>Trachent</author>
<subject>PHP</subject>
</book>
<book>
<title>Perl</title>
<author>Christian</author>
<author>Tork</author>
<subject>Perl</subject>
</book>
</books>

Danke im vorraus!
vsmfoxx
 
Posts: 4
Joined: 20. March 2008 20:23

Postby Nobbie » 20. March 2008 21:12

Das hat keinen Sinn, irgendwo ein paar Zeilen PHP abzukupfern, die man nicht versteht und die auch nicht das tun, was Du glaubst. Und die Fehlermeldungen solltest Du auch verstehen und lesen lernen, denn sie sind präzise und eindeutig.

Für Anfänger und insbesondere auch für die Aufgabenstellung würde ich ohnehin empfehlen, nicht mit domxml, sondern mit simple_xml die Datei einzulesen. Das geht einfacher und ist auch sicherlich leichter zu verstehen.

Google mal danach.
Nobbie
 
Posts: 13170
Joined: 09. March 2008 13:04

Postby vsmfoxx » 21. March 2008 02:15

zum testen...von domxml
nur noch mal so, folgender code wird bei php.net angeben:
http://de2.php.net/manual/de/function.domnode-append-child.php

Code: Select all
$doc = domxml_new_doc("1.0");
$node = $doc->create_element("para");
$newnode = $doc->append_child($node);
$newnode->set_attribute("align", "left");


beim testen erhalte ich die fehlermeldung wie beschrieben:

Warning: domnode::append_child() expects parameter 1 to be object, null given in C:\xampp\htdocs\www\20080318.xml_parser\xml2.php on line 4

Fatal error: Call to a member function set_attribute() on a non-object in C:\xampp\htdocs\www\20080318.xml_parser\xml2.php on line 5

Demnach erwartet PHP von mir Parameter, so lese ich das. Aber es sind meiner meinung nach alle Parameter gesetzt. Demnach sollte eine element "para" erzeugt werden, tut´s aber wohl nicht, zufolge das der rest auch nicht gehen kann weil es sich darauf bezieht.

so viel zu "Und die Fehlermeldungen solltest Du auch verstehen und lesen lernen, denn sie sind präzise und eindeutig. "
aber sicherlich weis jdm rat oder antwort mit "INHALT" was ich übersehen habe?, DANKE

werd mir aber simple_xml zu herzen nehmen und mich informieren. DANK!
vsmfoxx
 
Posts: 4
Joined: 20. March 2008 20:23

Postby Xardas der Dunkle » 21. March 2008 03:42

Das steht da nicht, es steht da das append_child ein Objekt als ersten Parameter erwartet, aber ihm ein Wert von null (nicht zu verwechseln mit 0) übergeben wurde.
Das heißt wohl das erstellen von dem Element "para" fehlgeschlagen ist, wieso auch immer.
/EDIT: Wobei laut der Beschreibung von create_element eig. ein false drin stehen müsste o_Ô: http://de2.php.net/manual/de/function.d ... lement.php
/EDIT2: Am besten wendest du mal print_r oder var_dump auf $node an.

Zudem ist simplexml fürs auslesen von XML-Files, nicht fürs erstellen (erstellen kommt meines wissens erst mit PHP 6 [schlagt mich nicht wenn ich falsch liege^^]).
User avatar
Xardas der Dunkle
 
Posts: 482
Joined: 09. March 2008 19:40
Location: /var/www

Postby vsmfoxx » 21. March 2008 11:12

Danke! Das ist wenigstens mal eine aussage!
werds mit var_dump mal ausprobieren was er mir da rausschmeisst.
Bin ja hartnekkig und möchte schon gerne wissen wodran es liegt. :?

simplexml ist auf den ersten blick für meine bedürfnisse geeignet.
schließlich will ich erstmal eine xml auslesen...

der (andere) code war ja nur zum testen ob domxml überhaupt funktioniert...

FRAGE: "Gibts hier überhaupt EINEN im FORUM auf dem DOMXML auf seinen PC funktioniert?" und das mit einer xampp version wo domxml freigeschaltet wurde?
vsmfoxx
 
Posts: 4
Joined: 20. March 2008 20:23

Postby Wiedmann » 21. March 2008 14:21

ich habe probleme mit der "domxml" extension.
xampp version 1.6.5 PHP 5.2.5 windows xp sp2 wird genutzt.

PHP-Manual wrote:Note: This extension is no longer marked experimental. It will, however, never be released with PHP 5, and will only be distributed with PHP 4. If you need DOM XML support with PHP 5 you can use the DOM extension. This domxml extension is not compatible with the DOM extension.

PECL Manual wrote:Although it should be possible to use this old domxml extension with PHP 5, its use is highly discouraged, as there a very high potential for conflicts with the new dom extension.


FRAGE: "Gibts hier überhaupt EINEN im FORUM auf dem DOMXML auf seinen PC funktioniert?"

Mit PHP4 tut das wie zu erwarten ohne Probleme. Mit PHP5 sollte man dann die eh vorhandene DOM-Extension nehmen (die "DOM XML"-Extenion auf jeden Fall wieder deaktivieren). Und dein Beispiel oben würde dann z.B. so ausehen:
Code: Select all
<?php
$doc = new DOMDocument('1.0');
$node = $doc->createElement('para');
$newnode = $doc->appendChild($node);
$newnode->setAttribute('align', 'left');
?>
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby vsmfoxx » 21. March 2008 16:34

Danke!
Das erklärt natürlich vieles, ich werds entsprechend ausprobiern...
vsmfoxx
 
Posts: 4
Joined: 20. March 2008 20:23


Return to XAMPP für Windows

Who is online

Users browsing this forum: No registered users and 37 guests