Mam problem z dostępem do @attribute
sekcji mojego obiektu SimpleXML. Kiedy mam var_dump
cały obiekt, otrzymuję prawidłowe dane wyjściowe, a kiedy mam var_dump
resztę obiektu (zagnieżdżone tagi), otrzymuję poprawne dane wyjściowe, ale kiedy śledzę dokumenty i var_dump
$xml->OFFICE->{'@attributes'}
otrzymuję pusty obiekt, pomimo faktu, że pierwsza var_dump
wyraźnie pokazuje, że istnieją atrybuty do wyprowadzenia.
Czy ktoś wie, co tu robię źle / jak mogę to zrobić?
Odpowiedzi:
Atrybuty elementu XML można uzyskać, wywołując funkcję attribute () w węźle XML. Następnie możesz var_dump wartość zwracaną przez funkcję.
Więcej informacji na php.net http://php.net/simplexmlelement.attributes
Przykładowy kod z tej strony:
źródło
$b
będzie takiSimpleXMLElement
obiektprint_r
ivar_dump
da Ci dziwne rzeczy. Możesz rzucić go jako sznur (lub cokolwiek chcesz), aby to obejść.Spróbuj tego
źródło
attributes()
obiekt odpowiadający właściwemu tagowi w twoim XML. Na przykład, jeśli masz<root><tag attr="a">b</tag></root>
, musisz zrobić,$xml->tag->attributes()->attr
aby uzyskać do niego dostęp.Używałem wcześniej tyle razy, żeby dostać się
@attributes
jak poniżej i trwało to trochę dłużej.Powinno być łatwiejsze i możesz uzyskać atrybuty w następującym formacie tylko na raz:
Standardowy sposób - atrybuty dostępu do tablicy (AAA)
Inne alternatywy to:
Właściwe i szybkie formatowanie
Niewłaściwe formaty
źródło
$xml->attributes()->{'field'}
,$xml->attributes()->field
i$f='field'; $xml->attributes()->$f;
są takie same. Nie widzę powodu, dla którego jeden jest właściwym formatem, a inny jest zły.Użyj
SimpleXMLElement::attributes
.Prawda jest taka, że
get_properties
program obsługi SimpleXMLElement leży bardzo długo. Nie ma właściwości o nazwie „@attributes”, więc nie możesz tego zrobić$sxml->elem->{"@attributes"}["attrib"]
.źródło
get_properties
obsługi). Bardzo interesujące.Możesz po prostu:
źródło
Jeśli jednak szukasz listy tych atrybutów, XPath będzie Twoim przyjacielem
źródło
Pomogło mi to przekonwertować wynik simplexml_load_file ($ file) na strukturę JSON i zdekodować go z powrotem:
źródło
Niestety mam unikalną kompilację (na razie utknąłem w Gentoo) PHP 5.5 i znalazłem to
było jedynym rozwiązaniem, które zadziałało. Wypróbowałem wszystkie powyższe metody Bora, w tym format „Right & Quick” i wszystkie zawiodły.
Fakt, że jest to najłatwiejszy format, jest plusem, ale nie podobało mi się myślenie, że oszalałem, próbując wszystkich formatów, o których inni mówili, że działają.
Ciesz się, za ile jest wart (czy wspomniałem o wyjątkowej konstrukcji?).
źródło