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: 28716
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-2020 v.1.5 | design: diviXdesign & rainbowcolors