Voici une forme simple j'utilise pour envoyer des données XML dans admin_xml.phpComment améliorer le code suivant dans PHP
<form name="review" action="admin_xml.php" method="post">
<textarea name="xml" cols="40" rows="10"></textarea>
<input class="submit" type="submit" value="Submit Request">
</form>
Voici le XML que je rentre pour récupérer les données de MySQL Database
<?xml version="1.0" encoding="UTF-8"?>
<GetOrdersIds>
<Credentials>
<Username>my_username</Username>
<Password>my_password</Password>
</Credentials>
<Criterions>
<OrderNumber></OrderNumber>
<StartDate>2009-01-01</StartDate>
<EndDate>2009-07-01</EndDate>
</Criterions>
</GetOrdersIds>
Voici le code php qui extrait les balises du xml:
<?php
$text_all = "<?xml version=\"1.0\"?>\r\n<GetOrdersIds version=\"1.0\">\r\n<Credentials>\r\n<Username>my_username</Username>\r\n<Password>my_password</Password>\r\n</Credentials>\r\n<Criterions>\r\n<OrderNumber></OrderNumber>\r\n<StartDate>2009-01-01</StartDate>\r\n<EndDate>2009-07-01</EndDate>\r\n</Criterions>\r\n</GetOrdersIds>";
$field = "Criterions";
$result = substr($text_all, strpos($text_all, "<".$field.">")+strlen("<".$field.">"), strpos($text_all, "</".$field.">")-strlen("<".$field.">")-strpos($text_all, "<".$field.">"));
?>
Le résultat du code php ci-dessus est:
<OrderNumber></OrderNumber>
<StartDate>2009-01-01</StartDate>
<EndDate>2009-07-01</EndDate>
Lorsque le script est exécuté, le code php passe par mes données MySQL, et des extraits toutes les commandes entre la date de début et la date de fin donnée au dessus.
Y at-il une meilleure façon d'améliorer le code php suivant, de sorte qu'il exécute la même fonction:
$result = substr($text_all, strpos($text_all, "<".$field.">")+strlen("<".$field.">"), strpos($text_all, "</".$field.">")-strlen("<".$field.">")-strpos($text_all, "<".$field.">"));
Ceci est le code qui recherche à travers les données XML et récupère toutes les balises.
MISE À JOUR:
Quelqu'un peut-il indiquer le code de résultat $ en SimpleXML?
Utiliser la classe php SimpleXML (http://ca2.php.net/simplexml) – tomzx