DomDocument->get_element_by_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.
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
Ranga: Administrator serwisu Punktów: 0
Komentarze użytkowników
:: Losowe artykuły
:: Wymiana linków
Modowe inspiracje |
Android Gry i Aplikacje |
ZaplanujTransport.pl: Przeprowadzki, transport, aukcje |
Logo dla firmy |
Change Tires - Car Weather Forecast Reminder |
Laminas: MVC Framework for PHP |
IT Books Reviews and Programming: JS, JAVA, PHP, ANDROID, CSS |
Katalog roślin |
Programming articles: JAVA, PHP, C++, Python, JavaScript |
Kancelaria Adwokacka Łukasz Huszno