Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php][xml] jak sprawdzic czy istnieje atrybut o podanym id
Gregor1984
post 12.02.2007, 13:03:26
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 31.01.2007

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
siemakuba
post 12.02.2007, 13:13:48
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 112
Pomógł: 20
Dołączył: 10.04.2005

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Vogel
post 12.02.2007, 13:22:16
Post #3





Grupa: Zarejestrowani
Postów: 402
Pomógł: 0
Dołączył: 20.01.2003

Ostrzeżenie: (0%)
-----


uzyj XPATH.


--------------------
Go to the top of the page
+Quote Post
Gregor1984
post 12.02.2007, 14:54:57
Post #4





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 31.01.2007

Ostrzeżenie: (0%)
-----


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.

Ten post edytował Gregor1984 12.02.2007, 14:55:16
Go to the top of the page
+Quote Post
siemakuba
post 12.02.2007, 16:44:40
Post #5





Grupa: Przyjaciele php.pl
Postów: 1 112
Pomógł: 20
Dołączył: 10.04.2005

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 06:47