|
|
|
|
Bonjour,
J'ai besoin de recuperer du XML dans une page PHP puis d'en extraire un tag seulement. J'utilise donc DomDocument qui est tres performant, et la fonction DomDocument::getElementsByTagName.
Seulement voila si je charge mon XML dans mon objet DomDocument via une variable $string grace a la fonction DomDocument::loadXML cela ne marche pas alors que si je charge le meme XML mais via un fichier grace a la fonction DomDocument::load , ca marche parfaitement.
Voici le code qui marche :
$Dom = new DomDocument();
$Dom->validateOnParse = true;
if($Dom->load("XML/test2.xml"))
echo "XML charge.";
$liste = $Dom->getElementsByTagName('field');
foreach($liste as $lis)
{
if ($lis->hasAttribute("name")) {
if($lis->getAttribute("name")=="Title")
echo $lis->nodeValue;
}
}
$Dom = new DomDocument();
$Dom->validateOnParse = true;
if($Dom->loadXML($xml))
echo "XML charge.";
$liste = $Dom->getElementsByTagName('field');
foreach($liste as $lis)
{
if ($lis->hasAttribute("name")) {
if($lis->getAttribute("name")=="Title")
echo $lis->nodeValue;
}
}
Configuration: Linux Suse Firefox 3.0.1
Non aucun message d'erreur.
|
Répondre à Daxter
|
Je viens de tester et le XML est bien charge. Je me demande si le fait que le XML soit dans une variable n'altère pas le XML.
<?xml version="1.0" encoding="ISO-8859-1"?> <wa-records version="1.0" timestamp="2008-09-22 12:45:35"> <record id="02902081" type="CR" database="prd"> <field sword="S82F7" name="BudgetCategory">X</field> <field sword="S0D90" name="EscalationValue">1</field> <field sword="S82F6" name="BudgetYear">XX</field> <field sword="S809B" name="AssigneeName">XXXXXX</field> <field sword="S809A" name="AssigneeGroup">XXXXX</field> <field sword="S8612" name="AIRChange">N</field> <field sword="S8213" name="FunctionalRank">9999</field> <field sword="S8575" name="DateWhished9">16SEP08</field> <field sword="S8A6A" name="Workflow">NORM</field> <field sword="S84A6" name="RequestorDate">16SEP08</field> <field sword="S0C62" name="LastModifyTime">13:43</field> <field sword="S80A8" name="ImpactsPerformance">X</field> <field sword="S0C61" name="EnteredTime">13:10</field> <field sword="S80A3" name="ImpactsService">X</field> <field sword="S80A2" name="FallbackRequest">N</field> <field sword="S84DB" name="Origin">T</field> <field sword="S8C5C" name="InitialWhishDate">16SEP08</field> <field sword="S81FF" name="ComponentsType">OTH</field> <field sword="S8A9F" name="ImpactOnDRSite">N</field> <field sword="S8162" name="Title">XXXXXX: Test XX For XXX tool</field> <field sword="S8161" name="Status">AS</field> <field sword="S8160" name="Category">X</field> <field sword="S88D1" name="OutputChange">N</field> <field sword="S8A55" name="TemplateID">243</field> <field sword="S8C92" name="SuppImpDCS">N</field> <field sword="S0B2D" name="LoggerPhone">+XXXXXXXXXX</field> <field sword="S8C91" name="SuppImpInv">N</field> <field sword="S88CF" name="ImpactsLFS">N</field> <field sword="S88CC" name="ProdTest">S</field> <field sword="S8C4F" name="ChangeRetailManagement">N</field> <field sword="S8995" name="VistaChange">N</field> <field sword="S8C4E" name="ChangeRetailOLTA">N</field> <field sword="S8994" name="EDIFACTChange">N</field> <field sword="S0C09" name="Type">OTH</field> <field sword="S8C4D" name="ChangeRetailAirline">N</field> <field sword="S8993" name="DateApplicable9">Y</field> <field sword="S8C4C" name="ChangeAlteaDesktop">N</field> <field sword="S8310" name="ImpactsTAMS">N</field> <field sword="S8992" name="DateApplicable8">Y</field> <field sword="S8C4B" name="ChangeWebServices">N</field> <field sword="S8991" name="DateApplicable7">Y</field> <field sword="S8C4A" name="ChangeAPIProxy">N</field> <field sword="S0C49" name="LoggingDate">16SEP08</field> <field sword="S8990" name="DateApplicable6">Y</field> <field sword="S88C8" name="NetImpDep">N</field> <field sword="S830F" name="InputTransChange">N</field> <field sword="S0C42" name="ReviewDate">31OCT08</field> <field sword="S830E" name="ImpactsEUM">N</field> <field sword="S898F" name="DateApplicable5">Y</field> <field sword="S830D" name="ImpactsBCS">N</field> <field sword="S8B26" name="CommunityAccess">C</field> <field sword="S898E" name="DateApplicable4">Y</field> <field sword="S830C" name="CommImpDep">N</field> <field sword="S898D" name="DateApplicable3">Y</field> <field sword="S830B" name="ImpactsDatabase">N</field> <field sword="S898C" name="DateApplicable2">Y</field> <field sword="S898B" name="DateApplicable1">Y</field> <field sword="S0B5E" name="LastModifyUser">DT5030</field> <field sword="S0BB1" name="ClassEntered">IWEXTAPI</field> <field sword="S0B9B" name="LoggerGroup"> XXX </field> <field sword="S8266" name="PriorityCategory">X</field> <field sword="S8C7C" name="SuppImpPricing">N</field> <field sword="S8AD2" name="UATApplicable">Y</field> <field sword="S8C7B" name="SuppImpMarCom">N</field> <field sword="S0B59" name="LoggerName"> XXX </field> <field sword="S8C7A" name="SuppImpCustSup">N</field> <field sword="S0C35" name="LastModifyDate">18SEP08</field> <field sword="S0C34" name="EnteredDate">16SEP08 18SEP08 18SEP08 18SEP08</field> <field sword="S80FB" name="RemoteDev">N</field> <field sword="S0C72" name="LoggingTime">13:10</field> -- il y en a encore ici mais je ne l'afficherai pas car je suis dans un cadre pro -- </record> </wa-records>
|