Convertir tableau multidimensionnel en XML
Merci de lire la ligne en gras ci-dessous avant de vous commenter que cela peut être un doublon. Cela n'a rien à voir avec SimpleXML.
Permettez-moi de commencer par vous montrer comment le XML doit être aménagée. S'il vous plaît ignorer les espaces de noms:
<hot:SearchHotels>
<hot:request>
<hot1:Destination>?</hot1:Destination>
<hot1:HotelCityName>?</hot1:HotelCityName>
<hot1:HotelLocationName>?</hot1:HotelLocationName>
<hot1:HotelName>?</hot1:HotelName>
<hot1:CheckIn>?</hot1:CheckIn>
<hot1:CheckOut>?</hot1:CheckOut>
<hot1:RoomsInformation>
<!--Zero or more repetitions:-->
<hot1:RoomInfo>
<hot1:AdultNum>?</hot1:AdultNum>
<hot1:ChildNum>?</hot1:ChildNum>
<!--Optional:-->
<hot1:ChildAges>
<!--Zero or more repetitions:-->
<hot1:ChildAge age="?"/>
</hot1:ChildAges>
</hot1:RoomInfo>
</hot1:RoomsInformation>
<hot1:MaxPrice>?</hot1:MaxPrice>
<hot1:StarLevel>?</hot1:StarLevel>
<hot1:AvailableOnly>?</hot1:AvailableOnly>
<hot1:PropertyType>?</hot1:PropertyType>
<hot1:ExactDestination>?</hot1:ExactDestination>
</hot:request>
</hot:SearchHotels>
Avis en vertu de l'hot1:RoomsInformation il est RoomInfo. Je suis censé être en mesure d'envoyer plusieurs RoomInfo nœuds. Mais je suis en utilisant une classe PHP pour convertir un tableau à cet objet d'être soumis par l'intermédiaire du SAVON.
Voici mon tableau avant, il est converti en objet:
$param = array(
"Destination" => $destcode,
"HotelCityName" => $city,
"HotelLocationName" => "",
"HotelName" => "",
"CheckIn" => date("Y-m-d", strtotime($checkin)),
"CheckOut" => date("Y-m-d", strtotime($checkout)),
"RoomsInformation" => array (
"RoomInfo" => array(
"AdultNum" => 2,
"ChildNum" => 1,
"ChildAges" => array(
"ChildAge" => array(
"age"=>11
)
)
),
"RoomInfo" => array(
"AdultNum" => 1,
"ChildNum" => 0,
"ChildAges" => array(
"ChildAge" => array(
"age"=>0
)
)
)
),
"MaxPrice" => 0,
"StarLevel" => 0,
"AvailableOnly" => "false",
"PropertyType" => "NotSet",
"ExactDestination" => "false"
);
$param = arrayToObject($param) ;
$obj = new stdClass();
$obj->request=$param;
$result = $test->SearchHotels($obj) ;
Le problème est que, après la conversion d'un Objet, il est à seulement 1 RoomInfo et son la dernière. Ma pensée est que parce que les RoomsInformation tableau a 2 identiques noms de CLÉ. Alors, comment puis-je faire ce travail?
Pour votre information, voici le SAVON de classe I de l'utilisation et de la arrayToObject fonction:
Si vous utilisez du SAVON, puis le php SoapClient peut gérer le tableau
Vous ne pouvez pas, pas avec ce tableau. N'importe comment beaucoup de
RoomsInformation
entrées que vous avez, si ils ont la même clé, ils sont en effet l'un.Un autre portential liés à la question est: Comment mettre à jour SimpleXMLElement à l'aide du tableau
Merci pour les doublons. Cependant j'ai déjà regardé et ils n'ont pas à voir avec ce que je suis en train de faire. Je ne suis pas en train d'utiliser SimpleXML. Je suis en train de convertir un objet pour une utilisation avec du SAVON
OriginalL'auteur swg1cor14 | 2013-07-02
Vous devez vous connecter pour publier un commentaire.
Le problème est que votre tableau est invalide, vous soupçonne en raison des doubles des clés. Une manière de résoudre le problème consiste à enrouler chaque "RoomInfo" dans son propre tableau comme suit:
Et vous pouvez générer le XML comme ceci:
Je attribut de la array_to_xml de fonction pour le merveilleux auteur ici: https://stackoverflow.com/a/5965940/2200766
Veuillez voir le modifier, j'ai ajouté à la fin de la question
OriginalL'auteur chrislondon
Il semble comme si vous devriez avoir votre tableau comme cela, à la place;
Ce sera de préserver les deux RoomInfo les éléments du tableau.
OriginalL'auteur Tim
convertir PHP multidimensionnelle ou tableau associatif de fichier XML, et l'exemple de code montre comment analyser le fichier XML et de convertir les données XML en tableau en PHP. J'ai une entrée à deux dimensions tableau contenant le tableau de clés/élément paires. Pour une meilleure compréhension, tout le Tableau de conversion XML code seront regroupés dans une fonction PHP. Le generateXML() fonction convertit PHP array multidimensionnel de format de fichier XML. Le tableau de données doit être passé en paramètre dans generateXML() fonction. Cette fonction créer un document XML à l'aide de la classe DOMDocument et insérez le tableau PHP contenu dans le présent document XML. À la fin, le document XML est enregistré comme un fichier XML dans le fichier spécifié l'emplacement avec le nom de fichier.
Vous avez seulement besoin d'utiliser generateXML() et la fonction de transmettre les données de la matrice de dans il de convertir le tableau en XML en PHP. Vous pouvez voir le détail ici et aussi convertir XML en Tableau
OriginalL'auteur Legend Blogs