XML - Zugriff auf Element

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • XML - Zugriff auf Element

    Hallo zusammen, ich brauche eure fachmännische Hilfe in Zusammenhang mit XML. Folgendes XML Schema habe ich.


    PHP Code:
    ["mitarbeiter"]=>
      
    object(SimpleXMLElement)#18 (1) {
        
    ["item"]=>
        array(
    2) {
          [
    0]=>
          
    object(SimpleXMLElement)#26 (11) {
            
    ["id"]=>
            
    string(1"4"

    ...

    [
    "beruf"]=>
      
    object(SimpleXMLElement)#19 (1) {
        
    ["va_beruf"]=>
        
    object(SimpleXMLElement)#28 (1) {
          
    ["item"]=>
          array(
    3) {
            [
    0]=>
            
    object(SimpleXMLElement)#29 (10) {
              
    ["id"]=>
              
    string(1"4"
              
    ["beruf"]=>
              
    string(2"Hans im Glück" 
    Hier zu meiner Frage: Ich durchlaufe die "mitarbeiter" per foreach und möchte für jeden Mitarbeiter den Zutreffenden Beruf (Hans im Glück) herausfinden. Wie kann ich mit simplexml am einfachsten das gewünschte Element auslesen?

    Gibts ne Möglichkeit das ich direkt darauf zugreiffen kann oder muss ich nochmals per Schleife alles durchrattern?

  • #2
    Hallo,

    wie sieht dein bisheriger Versuch aus?

    Ohne SimpleXml näher zu kennen tippe ich nach einem kurzem Besuch von

    http://de3.php.net/simplexml (guck mal gleich auf das example#2)

    irgendwie was in der Richtung von

    PHP Code:
    $xml->mitarbeiter[x]->beruf 
    tippen, wobei das x eben durch den entsprechenden (Array)-Index ersetzt werden muss, den du ja von deiner foreach-Schleiche kriegen müsstest.

    EDIT:
    wobei - wenn ich mir jetzt dein Beispiel da so anseh

    Kannst du mal die original Xml-Datei posten?
    Last edited by Quetschi; 26-03-2008, 15:36.
    Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
    Schön - etwas Geschichte kann ja nicht schaden.
    Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

    Comment


    • #3
      Momentan mache ich das so:

      PHP Code:
      foreach($this->xmlData->mitarbeiter->item as $value)
      {
        foreach(
      $this->xmlData->beruf->va_beruf->item as $beruf)
        {
          if(
      $value->id == $beruf->id)
          {
             echo 
      $beruf->beruf;
          }
        }

      das Problem ist, das ich bei beruf->item die Nummer des Array nicht weiss, so kann ich nicht direkt darauf zugreiffen.

      Comment


      • #4
        puh - kenn wie gesagt simpleXml nicht wirklich.

        Mit Dom würd ich halt einfach mit ner XPath-Query direkt drauf zugreifen.
        Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
        Schön - etwas Geschichte kann ja nicht schaden.
        Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

        Comment


        • #5
          ähm...

          PHP Code:
          foreach($this->xmlData->mitarbeiter->item as $itemID=>$value)
          {
            echo 
          $this->xmlData->beruf->va_beruf->item[$itemID]->beruf;

          evtl.??

          UPDATE:
          na - glaub bin da auch wieder auf dem falschen Dampfer...
          Ich würde wie gesagt gern mal dein QuellXml sehen...
          Last edited by Quetschi; 27-03-2008, 14:45.
          Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
          Schön - etwas Geschichte kann ja nicht schaden.
          Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

          Comment


          • #6
            Mit Dom würd ich halt einfach mit ner XPath-Query direkt drauf zugreifen.
            Warum dann nicht auch mit SimpleXML?

            Comment


            • #7
              Original geschrieben von PHP-Desaster
              Warum dann nicht auch mit SimpleXML?
              Ich sagte doch, dass ich simpleXml praktisch so gut wie nicht kenne ...
              Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
              Schön - etwas Geschichte kann ja nicht schaden.
              Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

              Comment


              • #8
                @in Simplexml Objekt

                Wie kann man auf @ in Simple xml Objekten zugreifen?
                BSP:
                FELDER=SimpleXMLElement Object
                (
                [@attributes] => Array
                (
                [name] => Zeichnung_Art
                [id] => 16
                [repetition] => 1
                [maxRepetition] => 1
                [table] => Zeichnung_Planum
                )
                )

                Möchte nun gerne auf den name zugreifen Problem
                $felder->{'@attributes'} hilft auch nicht.
                Vielleicht hat jemand noch einen Vorschlag wenn nicht muss ich es wohl auch mit x-Path machen :-(

                Comment


                • #9
                  ist ein Array

                  hat sich erledigt, @attributes ist ja ein Array, deshalb Zugriff über $felder["name"]

                  Comment


                  • #10
                    Originally posted by halo1 View Post
                    Wie kann man auf @ in Simple xml Objekten zugreifen?
                    BSP:
                    FELDER=SimpleXMLElement Object
                    (
                    [@attributes] => Array
                    (
                    [name] => Zeichnung_Art
                    [id] => 16
                    [repetition] => 1
                    [maxRepetition] => 1
                    [table] => Zeichnung_Planum
                    )
                    )

                    Möchte nun gerne auf den name zugreifen Problem
                    $felder->{'@attributes'} hilft auch nicht.
                    Vielleicht hat jemand noch einen Vorschlag wenn nicht muss ich es wohl auch mit x-Path machen :-(
                    Ausgehend von deiner Frage und der Struktur ($felder->) sollte es eigentlich so gehen:
                    PHP Code:
                    <?php
                    $wert_des_attributs 
                    $felder->attributes()->name_des_attributs;
                     
                    // Als Beispiel
                    $wert $felder->attributes()->name;
                    echo 
                    $wert// gibt 'Zeichnung_Art' aus
                    ?>
                    Siehe auch http://de.php.net/manual/de/function...attributes.php
                    Last edited by mkb_webprint; 13-07-2009, 10:19.

                    Comment

                    Working...