Loading:


    DomDocument->get_element_by_id
    DomDocument->get_element_by_id ( string $id )

    Ta funkcja jest podobna do domdocument_get_elements_by_tagname (), ale szuka elementu z danym id. Według DOM tego wymaga standardowe  DTD, które definiuje  ID atrybutu typu ID, choć obecny stan wdrożenia po prostu przebiega XPath szukaj "//*[ID = '% s'] ". To nie są zgodne z DOM standard, który wymaga, aby powrócić null, jeśli nie jest znane, gdzie jest atrybut typu ID. To zachowanie może być ustalone, więc nie polega na aktualnie zachowanym.



    Napisz Artyku³

    Listing


           
    //Klasa ta jest użyteczna dla ludzi, którzy nie mają najnowszych wersjach PHP i chcieli, aby wyszukać element o znanej ID poprzez zbiór węzłów.

    //Przykład:

    $domDoc = xmldoc("<root><entity id='e1'></entity><entity id='e2'><titi id='e5'></titi></entity></root>");
       
    $root = $domDoc->root();
    $children = $root->child_nodes();
       
    $researchObject = new searchElementById("e5", $children);
    $resultElement = $researchObject->beginSearching();

    //Źródło klasy:

    class searchElementById {
           
      //Class which can find and return an XML node with a specified ID
      var $numberElements=0;
      var $numberAttributes=0;
      var $idToFind;
      var $tabElements;
           
      //inicjalizowanie funkcji przyjmującej 2 parametry :
      //$paramIdToFind : wartość ID, do odnalezienia
      //$paramTabElements : tablicę węzłów, który zawiera element do znalezienia
      function searchElementById($paramIdToFind, $paramTabElements) {
        //Initialization of class variables
        $this->idToFind = $paramIdToFind;
        $this->tabElements = $paramTabElements;
      }
       
      //funkcja rozpoczynająca przeszukiwanie
      function beginSearching() {
        //szuka i zwraca szukany element
        return $this->searchID($this->tabElements);
      }
           
      //Recursive function searching the desired node
      function searchID($tabElements) {
       
        //zmienna liczby elementów
        $i = 0;
        //zmienna liczby atrubutów
        $j = 0;
       
        //numer węzła w tablicy elementów
        $nbreNoeuds = count($tabElements);
                       
        //pętla po wszystkich elementach
        for ($i=0;$i<$nbreNoeuds;$i++) {
                   
          //implementacja zmiennej klasy całkowitej wartości liczby elementów
          $this->compteurElements++;
                   
          //wydobycie atrybutów bieżącego elemntu
          $tabAttributs = $tabElements[$i]->attributes();
          //numer atrybutu bieżącego elementu
          $nbreAttributs = count($tabAttributs);
          //pętla po wszystkich atrybutach
          for ($j=0;$j<$nbreAttributs;$j++) {
                       
            //implementacja zmiennej klasy całkowitej wartości liczby elementów
            $this->numberAttributes++;

            //test jeżeli bieżący atrybut jest szukanym atrybutem
            if ($tabAttributs[$j]->value==$this->idToFind) {
              //jeśli tak zwracamy bieżący element
              return $tabElements[$i];
            }
                       
          }
                   
          //szukamy dzieci bieżącegoi elementu
          $children = $tabElements[$i]->child_nodes();
          if (!is_bool($children)) {
            // Jeśli bieżący element posiada dzieci, wywołujemy  tą funkcje rekursywnie
           $result = $this->searchID($children);
            //If the result is not boolean, return the array
            if (!is_bool($result)) {
              return $result;
            }              
          }
        }
               
        return false;
       
      }
           
    }




    Dodano przez: igor
    Ranga: Administrator serwisu Punktów: 0
    Komentarze użytkowników
      • Tre¶æ komentarza
        Kod do komentarza (opcjonalnie)
        PHP JavaScript MySQL Smarty SQL HTML CSS ActionScript
        Autor
        Token
        token

         

         








    funkcje.net
    Wszelkie prawa zastrzeżone©. | Funkcje.net 2008-2025 v.1.5 | design: diviXdesign & rainbowcolors