Open yann-eugone opened 10 years ago
Et le problème est à priori le même sur tous les parse*
Exemples :
protected function parseElements(\SimpleXmlElement $xml, ClassMetadata $metadata, $obj)
{
foreach ($metadata->getElements() as $name => $properties)
{
$property = $properties[0];
$namespace = $properties[1];
if ($namespace == null)
{
$elements = $xml->children();
$value = (string) $elements->$name;
}
else
{
$elements = $xml->children($namespace);
$value = (string) $elements->$name;
}
$setter = 'set' . ucfirst($property);
$obj->$setter($value);
}
}
ou
protected function parseRow(\SimpleXmlElement $xml, ClassMetadata $metadata, $obj)
{
foreach ($metadata->getRows() as $nodeName => $info)
{
$property = $info[0];
$namespace = $info[1];
if ($namespace == null) {
$node = $xml->children();
$node = $node->$nodeName;
} else {
$node = $xml->children($namespace);
$node = $node->$nodeName;
}
$value = $node->asXML();
if ($value != null)
{
$setter = 'set' . ucfirst($property);
$obj->$setter($value);
}
}
}
Soit le XML suivant :
Et les règles de sérialisation suivantes :
La sérialisation de la propriété
object
ne se fait pas (la valeur est toujoursNULL
), à cause des problématiques de namespaces sur l'objet root.A mon sens, il s'agit d'un soucis au niveau de l'utilisation de l'objet SimpleXmlElement, couplé aux namespaces.
La correction suivante règle le problème :
Mais peut-elle être source de regression ?