Philipp Hasenfratz: (PERL) XML::DOM Anwendungsproblem

Hallihallo

Ich versuche mich grad etwas mit XML; dass ich noch nicht gleich zum "alten Eisen" gehöre.
Begonnen hat alles mit dem guten (und einfachen) XML::Simple... Alles super, aber mir scheint es zu einfach zu sein ;)
Auch Validator gibt's nicht etc...
Also versuche ich mich mal an DOM und SAX anzufreunden (DOM geht vor).

Also jetzt XML::DOM, da tauchen immer die selben Probleme auf und irgendwie weiss ich nicht warum (Frage unten) :

---XML-file---
<?xml version = "1.0"?>
<!DOCTYPE ADDRBOOK SYSTEM "addr_book.dtd">
<ADDRBOOK>
    <ENTRY ID="pa">
        <NAME>Pieter Aaron</NAME>
        <ADDRESS>404 Error Way</ADDRESS>
        <PHONENUM DESC="Work">404-555-1234</PHONENUM>
        <PHONENUM DESC="Fax">404-555-4321</PHONENUM>
        <EMAIL>pieter.aaron@inter.net</EMAIL>
    </ENTRY>
    <ENTRY ID="en">
        <NAME>Emeka Ndubuisi</NAME>
        <ADDRESS>42 Spam Blvd</ADDRESS>
        <PHONENUM DESC="Work">767-555-7676</PHONENUM>
        <EMAIL>endubuisi@spamtron.com</EMAIL>
    </ENTRY>
</ADDRBOOK>
---/XML-file---

---perl-Program---
use strict;
use Data::Dumper;
use XML::DOM;

my $parser = new XML::DOM::Parser;
my $doc    = $parser->parsefile('address.xml');

my $nodes  = $doc->getElementsByTagName('ENTRY');
my $n    = $nodes->getLength;

print "Länge : $n\n";

for (my $i=0; $i<$n; $i++)
{
   my $a_node = $nodes->item($i);
   my $a_chld = a_node->getChildNodes;
   for (my $j=0; $j<$a_chld->getLength; $j++)
   {
 my $a_child = $a_chld->item($j);
 if ($a_child->getNodeName() eq 'NAME')
 {
    print 'Name: ' . $a_child->getFirstChild->getData . "\n";
 }
 if ($a_child->getNodeName() eq 'PHONENUM')
 {
    if ($a_child->getAttribute('DESC') eq 'Work')
    {
  print 'Work Phone: ' .
                $a_child>getFirstChild->getData . "\n";
    }
 }
   }
}
---/perl-Program---

Also das Problem:
Ich bekomme des öfteren die Fehlermeldung, dass eine gewisse Methode (getChildNodes z. B.) nicht im Objekt $a_node "ist". print Dumper sagt was, also ist das Objekt definiert und in der Doku steht's auch geschrieben, dass dies funktioniert. Also warum tut es das denn nicht?

Viele Grüsse

Philipp

  1. Hallo,

    Aha, also ein 'Bekehrter':-)

    my $a_node = $nodes->item($i);
       my $a_chld = a_node->getChildNodes;

    ^^^^^^^^
    Versuchs hier mit $a_node;-)

    for (my $j=0; $j<$a_chld->getLength; $j++)

    [...]

    print 'Work Phone: ' .
                    $a_child>getFirstChild->getData . "\n";

    ^^^^
    und hier mit ->;-)

    Grüße
      Klaus

    1. Hallihallo

      Aha, also ein 'Bekehrter':-)

      Ich tue mein Bestes ;)
      Nun, ja, ich probiere es mal aus "reinem Interesse" ;)
      Ich könnte wetten, dass ich in zwei Wochen XML liebe...

      [...]
      Um himmels Willen, bin ich denn noch zu retten? - Nun, ich bitte vielmals um Entschuldigung! - Sowas ist mir ja noch nie passiert...
      Alle Leser dieses Threads: I G N O R I E R T   I H N (den Thread)!!!

      Huch, das nächste mal versuche ich's mit Verstand ;)

      Ist ja peinlich.

      Nun, vielen Dank und viele Entschuldigungen an dich Klaus

      Philipp.

      PS: Geh in deine Ecke und schäm dich Philipp!!!

      1. Hallo Philipp,

        Ich könnte wetten, dass ich in zwei Wochen XML liebe...

        abwarten ;-)

        Sowas ist mir ja noch nie passiert...

        Echt, passiert mir dauernd, wenn ich programmiere, muss an Perl liegen *fg*

        Gruß
        Franz

        1. Hallihallo

          Ich könnte wetten, dass ich in zwei Wochen XML liebe...
          abwarten ;-)

          Tja. Mal schaun, ob mich XML von dessen Leistung überzeugen kann ;)

          Sowas ist mir ja noch nie passiert...

          Echt, passiert mir dauernd, wenn ich programmiere, muss an Perl liegen *fg*

          Eindeutig ;)
          Ne, ich meine, dass ich mit solchen Fragen ins Forum platze und es dann an ganz simplen Syntaxfehlern liegt. Schon ziemlich peinlich (für mich zumindest).

          Viele Grüsse

          Philipp

          1. Hallo,

            Ich könnte wetten, dass ich in zwei Wochen XML liebe...
            abwarten ;-)

            Tja. Mal schaun, ob mich XML von dessen Leistung überzeugen kann ;)

            Na ja, ist halt auch nur ein Protokoll. Und bekanntlich gibts meist nach den Anfangschwierigkeiten eine Euphorie und dann...
            Aber ich will Dir ja die Laune nicht verderben;-)

            Ne, ich meine, dass ich mit solchen Fragen ins Forum platze und es dann an ganz simplen Syntaxfehlern liegt. Schon ziemlich peinlich (für mich zumindest).

            Mach' Dir nichts draus, wem sowas nicht auch ab und zu passiert, der programmiert nicht wirklich. Was glaubst Du, warum irgendwann Syntaxhighlighting eingeführt wurde? Nur weil Heerscharen von Programmieren vorm COde gesessen sind und den verd... Fehler einfach nicht _gesehen_  haben.

            Grüße
              Klaus

            1. Hallihallo Klaus

              Ich könnte wetten, dass ich in zwei Wochen XML liebe...
              abwarten ;-)

              Tja. Mal schaun, ob mich XML von dessen Leistung überzeugen kann ;)

              Na ja, ist halt auch nur ein Protokoll.

              So so, ein Protokoll ;)
              Bringst du hier nicht was durcheinander?

              Und bekanntlich gibts meist nach den Anfangschwierigkeiten eine Euphorie und dann...
              Aber ich will Dir ja die Laune nicht verderben;-)

              Geht nicht. Ich baue sie mir ja erst auf ;)

              Ne, ich meine, dass ich mit solchen Fragen ins Forum platze und es dann an ganz simplen Syntaxfehlern liegt. Schon ziemlich peinlich (für mich zumindest).

              Mach' Dir nichts draus, wem sowas nicht auch ab und zu passiert, der programmiert nicht wirklich. Was glaubst Du, warum irgendwann Syntaxhighlighting eingeführt wurde? Nur weil Heerscharen von Programmieren vorm COde gesessen sind und den verd... Fehler einfach nicht _gesehen_  haben.

              Das stimmt schon, aber man braucht den Scheiss ja nicht gleich zu posten. Aber lassen wie die Geschichte; bin die ganze Nacht in meiner Ecke gesessen und hab mich geschämt ;)
              Hab mich genug bestraft...

              Viele Grüsse

              Philipp

              1. hollaröduliö,

                Na ja, ist halt auch nur ein Protokoll.

                So so, ein Protokoll ;)
                Bringst du hier nicht was durcheinander?

                Ups, jetzt bin wohl der, der schnellstens in die Ecke sollte:-(

                Grüße aus der Steiermark
                  Klaus

                1. Hallihallo  <-- ich weiss, dass ich es nicht lassen kann!

                  Na ja, ist halt auch nur ein Protokoll.

                  So so, ein Protokoll ;)
                  Bringst du hier nicht was durcheinander?

                  Ups, jetzt bin wohl der, der schnellstens in die Ecke sollte:-(

                  Ein ganz intelligenter Mann hat einmal zu mir gesagt:
                  "Mach' Dir nichts draus, wem sowas nicht auch ab und zu passiert, der programmiert nicht wirklich"; der Autor erkennt sich selber :-)

                  Viele Grüsse aus der Schweiz

                  Philipp