La lecture de nœuds XML avec des noms avec trait d'union à l'aide de SimpleXML peut être délicate. La bibliothèque native SimpleXML s'attend à ce que les nœuds soient spécifiquement préfixés par deux points pour les espaces de noms (et convertis en lettres majuscules) et traités comme un enfant de l'élément racine XML actuellement chargé.
Par exemple, pour accéder au document-meta nœud dans le XML fourni :
<?xml version="1.0" encoding="UTF-8"?> <gnm:Workbook xmlns:gnm="http://www.gnumeric.org/v10.dtd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.gnumeric.org/v9.xsd"> <office:document-meta xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" office:version="1.1"> <dc:creator>Mark Baker</dc:creator> <dc:date>2010-09-01T22:49:33Z</dc:date> <meta:creation-date>2010-09-01T22:48:39Z</meta:creation-date> <meta:editing-cycles>4</meta:editing-cycles> <meta:editing-duration>PT00H04M20S</meta:editing-duration> <meta:generator>OpenOffice.org/3.1$Win32 OpenOffice.org_project/310m11$Build-9399</meta:generator> </office:meta> </office:document-meta> </gnm:Workbook>
Au lieu d'utiliser $xml->children($namespacesMeta['office']), utilisez :
$officeXML = $xml->children($namespacesMeta['office'])->{’document-meta’};
Cela accédera au nœud document-meta et à ses enfants en conséquence.
Notez que ceci uniquement s'applique à l'accès aux éléments XML avec trait d'union. Pour les nœuds d'attribut, ils sont normalement accessibles en utilisant la notation de tableau @attributes.
Pour plus de clarté sur l'accès aux éléments avec des noms spéciaux en XML à l'aide de SimpleXML, reportez-vous à la documentation à l'adresse :
[Bases de SimpleXML](https://www.php.net/manual/en/simplexml.intro-example.php)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!