Nie używałam żadnych dodatkowych bibliotek a tylko active support.
Po pierwsze: jeśli jakiś element posiada wartość i atrybuty, to te atrybuty nie są dostępne (przynajmniej ja nie potrafię się do nich dobrać:P). Jeśli jest tylko wartość lub tylko atrybuty jest OK.
Po drugie: jak dobrać się do atrybutu xml:lang? Takie próby jak params[:root][:xml:lang] nie za bardzo działają…
Cześć Chłopaki! Dzięki za odzew!
Nie używałam Hash.from_xml…
Może zapytam inaczej:
Załóżmy, że serwer ma oczekiwać na wiadomości HTTP PUT, Content_type = text/xml a Body takie jak podałam w pierwszej wiadomości.
Jak wtedy dobrać się do każdego z atrybutów i wartości elementów?
Jeśli np. w Body takiej wiadomości byłby następujący xml:
<?xml version="1.0" encoding="UTF-8"?>
tresc xmla
to z "wyłuskaniem" poszczególnych parametrów nie ma problemu:
length = params[:root][:length]
lang = params[:root][:"xml:lang"]
value = params[:root][:value] .
Problem dla mnie pojawił się, kiedy element ma zarówno atrybuty jak i wartość (nie zagnieżdżoną kolejnymi elementami).
Ale może ja po prostu nie robię tego tak jak trzeba??
To jeszcze się upewnię czy dobrze rozumiem:)
Czyli powinnam wziąć: request.raw_post i sparsować go sobie przy użyciu np. Nokogiri, tak?
Zastanawia mnie to, że jak np. chcę sobie wypisać parametry z treści PUTa czy POSTa, używając request.request_parameters, to wszystko jest OK w takim przypadku:
<?xml version="1.0" encoding="UTF-8"?>
tresc xmla
Ale już w takim poniżej argumenty length oraz xml:lang tak jakby nie istniały…