0 votes

Texte XML dans un formulaire textarea... comment l'accepter comme XML en PHP ?

Existe-t-il un moyen simple de faire cela en PHP ? Comment prendre du texte brut, formaté en XML, dans la zone de texte d'un formulaire et faire en sorte que PHP le prenne en compte en tant que XML ? Je peux trouver comment parcourir l'arbre après qu'il soit un objet XML.


Je viens d'essayer la technique de Richsage sur cet échantillon xml :

<?xml version="1.0"?>

<videocollection>
    <title id="1">Tootsie</title>
    <genre>comedy</genre>
    <year>1982</year>
    <language>English</language>
    <cast>Dustin Hoffman</cast>
    <cast>Jessica Lang</cast>
    <cast>Teri Gar</cast>
    <cast>Sydney Pollak</cast>
    <crew>
      <director>Sydney Pollak</director>
    </crew>

    <title id="2">Jurassic Park</title>
    <genre>science fiction</genre>
    <year>1993</year>
    <language>English</language>
    <cast>Sam Neil</cast>
    <cast>Laura Dern</cast>
    <cast>Jeff Goldblum</cast>
    <crew>
      <director>Steven Spielberg</director>
    </crew>

    <title id="3">Mission Impossible</title>
    <genre>action</genre>
    <year>1996</year>
    <language>English</language>
    <cast>Tom Cruise</cast>
    <cast>Jon Voight</cast>
    <cast>Emmanuelle Beart</cast>
    <cast>Jean Reno</cast>
    <crew>
      <director>Brian de Palma</director>
    </crew>
</videocollection>

Voici mon code :

<html>
<head><title></title></head>
<body>
</body>

<?php
echo $_SERVER['PHP_SELF'];
$in_xml=$_POST['in_xml'];
if ($in_xml) {
    print "We got it!...";// . $in_xml;
    $doc = new DOMDocument();
    $doc->loadXML( $in_xml);
} else {
?>

<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
<textarea name="in_xml" cols="40" rows="10">
  Enter your comment here
</textarea>
<input type="submit" value="Submit">
<?php
}
?>

</html>

J'ai reçu un tas d'avertissements : Warning : DOMDocument::loadXML() [domdocument.loadxml] : String not started expecting ' or " in Entity, line : 1 in /Library/WebServer/Documents/sandbox/parse_xml/index.php on line 12

Avertissement : DOMDocument::loadXML() [domdocument.loadxml] : Malformed declaration expecting version in Entity, line : 1 in /Library/WebServer/Documents/sandbox/parse_xml/index.php on line 12

Avertissement : DOMDocument::loadXML() [domdocument.loadxml] : Blank needed here in Entity, line : 1 in /Library/WebServer/Documents/sandbox/parse_xml/index.php on line 12

Avertissement : DOMDocument::loadXML() [domdocument.loadxml] : parsing XML declaration : '?>' expected in Entity, line : 1 in /Library/WebServer/Documents/sandbox/parse_xml/index.php on line 12

Avertissement : DOMDocument::loadXML() [domdocument.loadxml] : AttValue : " ou ' attendu dans Entity, ligne : 4 in /Library/WebServer/Documents/sandbox/parse_xml/index.php on line 12

Avertissement : DOMDocument::loadXML() [domdocument.loadxml] : attributes construct error in Entity, line : 4 in /Library/WebServer/Documents/sandbox/parse_xml/index.php on line 12

Avertissement : DOMDocument::loadXML() [domdocument.loadxml] : Couldn't find end of Start Tag title line 4 in Entity, line : 4 in /Library/WebServer/Documents/sandbox/parse_xml/index.php on line 12

Avertissement : DOMDocument::loadXML() [domdocument.loadxml] : Mismatch des balises d'ouverture et de fin : videocollection ligne 3 et title dans Entity, ligne : 4 in /Library/WebServer/Documents/sandbox/parse_xml/index.php on line 12

Avertissement : DOMDocument::loadXML() [domdocument.loadxml] : Extra content at the end of the document in Entity, line : 5 in /Library/WebServer/Documents/sandbox/parse_xml/index.php on line 12

3voto

richsage Points 12266

Vous pouvez utiliser le DOMDocument en PHP :

$doc = new DOMDocument();
$doc->loadXML($yourXML);

où $yourXML est la donnée XML que vous avez obtenue de votre formulaire (par exemple via $_POST ou similaire). Une fois que vous avez obtenu ces données, vous pouvez parcourir l'objet comme vous l'avez décrit, ou utiliser XPath ou similaire pour naviguer et sélectionner les éléments comme vous le souhaitez.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X