[RESOLU] SimpleXML_load_String et XML String

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] SimpleXML_load_String et XML String

Re: [RESOLU] SimpleXML_load_String et XML String

par galerien » 13 juin 2014, 15:56

Réellement très interressant.

Merci.

Re: [RESOLU] SimpleXML_load_String et XML String

par telnes » 13 juin 2014, 15:35

Re: SimpleXML_load_String et XML String

par galerien » 13 juin 2014, 15:19

J'ai résolu mon problème .

Avec Xpath, cela fonctionne correctement si on utilise une commande du type $xml->xpath('/upd:Update/upd:Properties/@UpdateType')['0'] ->__toString().

Par contre, que l'on fasse une erreur dans la commande ou non, simple_xml ne me retournait aucune erreur => Pas facile de trouver l'erreur comme cela.

Par contre, que ce soit print_r, var_dump, ... je n'obtiens aucun affichage hormis un object simple_xml qui semble vide, d'ou mon problème pour le débuggage et la compréhension de mon erreur.

Réellement étrange que xpath retrouve le chemin mais qu'il soit impossible d'afficher l'object simple_xml.

Merci quand même.

Re: SimpleXML_load_String et XML String

par moogli » 07 juin 2014, 23:45

salut,

le problème est du aux espaces de noms.

si tu les enlèves tu n'auras pas de problème. (je ne sais pas pourquoi mais les espaces de nom ne sont pas utilisable...).

pour le voir correctement met en commentaire la première ligne (libxml_use_internal_errors(true);) tu auras les messages d'erreurs manquant.


@+

SimpleXML_load_String et XML String

par galerien » 07 juin 2014, 18:58

Bonjour,

Débutant en XML, je ne comprends pas pourquoi lorsque j'utilise la fonction simplexml_load_string, celle-ci me retourne un objet vide et aucune erreur.

La librairie XML est bien chargé et mon PHP est 5.5.11.

libxml =>
libXML support active
libXML Compiled Version 2.9.1
libXML Loaded Version 20901
libXML streams enabled

Je suis preneur de toute explication/solution pour que mon code fonctionne.

Le code que j'utilise pour les tests. Le XML est un XML exemple des données que je cherche à traiter.
<?php
libxml_use_internal_errors(TRUE);
$a = <<<XML
<upd:Update xmlns:pub="http://schemas.microsoft.com/msus/2002/12/Publishing" xmlns:bar="http://schemas.microsoft.com/msus/2002/12/BaseApplicabilityRules" xmlns:upd="http://schemas.microsoft.com/msus/2002/12/Update">
    <upd:UpdateIdentity UpdateID="002370d7-f7be-4701-b9fe-85e2092c1b85" RevisionNumber="100" />
    <upd:Properties DefaultPropertiesLanguage="en" UpdateType="Detectoid" ExplicitlyDeployable="false" IsPublic="false" DetectoidType="Application Locale" PublicationState="Published" CreationDate="2008-01-30T09:37:13.074Z" PublisherID="377c55d0-1cd2-4b33-a783-07ba418bb7fe"></upd:Properties>
    <upd:LocalizedPropertiesCollection>
        <upd:LocalizedProperties>
            <upd:Language>en</upd:Language>
            <upd:Title>SCCM 2007 ENU</upd:Title>
            <upd:Description>It is the detectoid that decides if the site server is English version.</upd:Description>
        </upd:LocalizedProperties>
    </upd:LocalizedPropertiesCollection>
    <upd:Relationships>
        <upd:Prerequisites>
            <upd:UpdateIdentity UpdateID="d22b3d16-bc75-418f-b648-e5f3d32490ee" />
        </upd:Prerequisites>
    </upd:Relationships>
    <upd:ApplicabilityRules>
        <upd:IsInstalled>
            <bar:RegSz Key="HKEY_LOCAL_MACHINE" Subkey="Software\Microsoft\SMS\Identification" Value="Language" Comparison="EqualTo" Data="English:00000409" RegType32="true" xmlns:bar="http://schemas.microsoft.com/msus/2002/12/BaseApplicabilityRules" />
        </upd:IsInstalled>
    </upd:ApplicabilityRules>
</upd:Update>
XML;

$xml=  simplexml_load_string($a);

print_r(libxml_get_errors());
print_r($xml);
?>