php - JMS Serializer to read xml:lang attribute -
this related xml:lang parse in php.
we utilize jms serializer create xml requests , parse xml responses sirena-travel (airticket provider). whole scheme of annotated dtos built around serializer, , we're unlikely alter this.
there reponse xml we'd deserialize (the same in above question):
<?xml version="1.0" encoding="utf-8"?> <answer> <describe data="aircompany"> <data> <code xml:lang="ru">fw</code> <code xml:lang="en">fw</code> </data> <data> <code xml:lang="ru">ut</code> <code xml:lang="en">ЮТ</code> </data> </describe> </answer> the question is: how specify property corresponding xml:lang attribute?
this how classes describing innermost elements like:
class describedata { /** * codes in various languages. * * @type("array<describelangelement>") * @xmllist(inline = true, entry = "code") */ private $codes = []; public function getcode($lang) { foreach ($this->codes $code) { if ($code->getlang() === $lang) { homecoming $code; } } homecoming null; } } class describelangelement { /** * element's language code. * * either "en" or "ru". * * @type("string") * @xmlattribute */ private $lang; /** * @type("string") * @xmlvalue */ private $value; } obviously, serializer not recognize xml:lang attribute $lang property. tried couple of approaches:
@serializedname("xml:lang") $lang property. add namespace annotation:
@xmlnamespace(uri = "http://example.com/", prefix = "xml") either parent node or root node, while modifying @xmlattribute annotation on $lang property like
@xmlattribute(namespace = "http://example.com/") needless say, no success either or both of them.
i have in mind alternate solutions like:
preprocess xml convertxml:lang attribute lang. write custom deserialization handler deal describelangelement class. but seem overkill me.
is there straight-forward way specify property xml:lang attribute jms serializer annotations?
namespace constraint: reserved prefixes , namespace names
the prefix xml definition bound namespace name http://www.w3.org/xml/1998/namespace. may, need not, declared, , must not undeclared or bound other namespace name. other prefixes must not bound namespace name, , must not declared default namespace.
from: http://www.w3.org/tr/xml-names11/#xmlreserved
therefore namespace not http://example.com/ http://www.w3.org/xml/1998/namespace.
php xml jms-serializer
No comments:
Post a Comment