Mixing processing instructions and element nodes gives inconsistent results in SimpleXML
Ouverte
Personne n'a encore pris cette issue.
Bug
Extension: simplexml
Status: Verified
- Langage dominant
- C
- Étoiles
- 40.4k
- Forks
- 8.1k
- Merge moyen
- 2 j 13 h
- PR mergées (30 j)
- 96
Description
Description
The following code:
<?php
$xml = <<<XML
<?xml version="1.0" encoding="utf-8"?>
<container>
<x/><?hello world?>
</container>
XML;
$sxe = simplexml_load_string($xml);
var_dump($sxe->children());
// x and hello swapped
$xml = <<<XML
<?xml version="1.0" encoding="utf-8"?>
<container>
<?hello world?><x/>
</container>
XML;
$sxe = simplexml_load_string($xml);
var_dump($sxe->children());
Resulted in this output:
object(SimpleXMLElement)#2 (2) {
["x"]=>
object(SimpleXMLElement)#4 (0) {
}
["hello"]=>
object(SimpleXMLElement)#5 (0) {
}
}
object(SimpleXMLElement)#1 (1) {
["x"]=>
object(SimpleXMLElement)#5 (0) {
}
}
But I expected this output instead:
object(SimpleXMLElement)#2 (2) {
["x"]=>
object(SimpleXMLElement)#4 (0) {
}
["hello"]=>
object(SimpleXMLElement)#5 (0) {
}
}
object(SimpleXMLElement)#1 (1) {
["hello"]=>
object(SimpleXMLElement)#%d (0) {
}
["x"]=>
object(SimpleXMLElement)#%d (0) {
}
}
PHP Version
PHP 8.1+
Operating System
Linux
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par les deux reproductions PHP de l’issue et examinez l’implémentation de SimpleXML ainsi que ses tests existants concernant l’ordre de children(). Comparez le traitement de processing-instruction et de element-node dans les deux ordres d’entrée, puis ajoutez une couverture montrant l’ordre attendu et exécutez les tests SimpleXML pertinents.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- php
- Domaine
- backend
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100