Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][xml] jak sprawdzic czy istnieje atrybut o podanym id
Forum PHP.pl > Forum > PHP
Gregor1984
Witam,

mam następujące pytanie
przechodzą przez drzewo XML w którym są elementy <value id=""> z atrybutem id od 2-49 i potrzebuję sprawdzać po kolei czy dane value z atrybutem id istnieje. jak mogę to zrobić?

pozdrawiam,
i proszę o pomoc
Greg
siemakuba
Musisz chyba napisać w jaki sposób przechodzisz przez te drzewo, bo różny może być wtedy sposób dostępu do atrybutów.

No i jeszcze co dokładnie chcesz sprawdzić?
- czy w aktualnie przetwarzanym elemencie value wogóle jest atrybut id?
- czy atrybut id znajduje się w jakimś zadeklarowanym zbiorze?

Daj więcej info, sprawa nie jest trudna ale szczegóły wymagane ;)

pozdr.
Vogel
uzyj XPATH.
Gregor1984
Cytat(siemakuba @ 12.02.2007, 13:13:48 ) *
Musisz chyba napisać w jaki sposób przechodzisz przez te drzewo, bo różny może być wtedy sposób dostępu do atrybutów.

No i jeszcze co dokładnie chcesz sprawdzić?
- czy w aktualnie przetwarzanym elemencie value wogóle jest atrybut id?
- czy atrybut id znajduje się w jakimś zadeklarowanym zbiorze?

Daj więcej info, sprawa nie jest trudna ale szczegóły wymagane winksmiley.jpg

pozdr.



fragment drzewka
  1. <unit calendar="1">
  2.                  <component id="1">
  3.                        <history>
  4.                              <tuple>
  5.                                    <value id="2">ZZZZZZZZZZZ</value>
  6.                                    <value id="4">ZZZZ</value>
  7.                              </tuple>
  8.                        </history>
  9.                  </component>


i jak mogę sprawdzic przechodząc pętla foreach czy istnieje value o id równe 3

wykorzystuję poniższą pętle
  1. <?php
  2. ...
  3. $dane_value = $xml -> xpath('unit/component/history/tuple/value');
  4. ...
  5. foreach($dane_value as $val)
  6. {
  7. echo "<td> $val </td>";
  8. }
  9. ..
  10. ?>


chciałbym jeśli $val nie istnieje (np id=3) żeby też wstawiał pusta kolumnie aby liczba wierszy mi się zawsze zgadzała.
siemakuba
Każdy element z tablicy $dane_value będzie obiektem typu SimpleXMLElement.
Żeby dostać się do atrybutów tego obiektu wykorzystaj metodę attributes() obiektu SimpleXMLElement (http://www.php.net/manual/pl/function.simp...-attributes.php).
Dostaniesz tablicę z atrybutami jako kolucze i ich wartościami jako elementy - pozostaje sprawdzić czy tablica ma klulcz id (isset" title="Zobacz w manualu php" target="_manual, empty" title="Zobacz w manualu php" target="_manual, array_key_exists" title="Zobacz w manualu php" target="_manual) i zależnie od tego wyświetlać co potrzeba.

pozdr.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.