Question

Est-il possible d'utiliser les fonctions SimpleXML de PHP pour créer un objet XML à partir de rien? En parcourant la liste des fonctions, vous pouvez importer une chaîne XML existante dans un objet que vous pouvez ensuite manipuler, mais si je veux simplement générer un objet XML à partir de rien par programmation, quel est le meilleur moyen de le faire?

J'ai compris que vous pouvez utiliser simplexml_load_string () et transmettre la chaîne racine souhaitée, puis vous avez un objet que vous pouvez manipuler en ajoutant des enfants ... bien que cela ressemble à une sorte de piratage, car Je dois coder un peu de XML dans la chaîne avant de pouvoir le charger.

Je l'ai fait à l'aide des fonctions DOMDocument , bien que ce soit un peu déroutant parce que je ne suis pas sûr de ce que le DOM a à voir avec la création d'un document XML pur ... alors c'est peut-être simplement mal nommé: -)

Était-ce utile?

La solution

Bien sûr, vous pouvez. P. ex.

<?php
$newsXML = new SimpleXMLElement("<news></news>");
$newsXML->addAttribute('newsPagePrefix', 'value goes here');
$newsIntro = $newsXML->addChild('content');
$newsIntro->addAttribute('type', 'latest');
Header('Content-type: text/xml');
echo $newsXML->asXML();
?>

Sortie

<?xml version="1.0"?>
<news newsPagePrefix="value goes here">
    <content type="latest"/>
</news>

Amusez-vous.

Autres conseils

En PHP5, vous devez utiliser le Document Object. Modèle classe à la place. Exemple:

$domDoc = new DOMDocument;
$rootElt = $domDoc->createElement('root');
$rootNode = $domDoc->appendChild($rootElt);

$subElt = $domDoc->createElement('foo');
$attr = $domDoc->createAttribute('ah');
$attrVal = $domDoc->createTextNode('OK');
$attr->appendChild($attrVal);
$subElt->appendChild($attr);
$subNode = $rootNode->appendChild($subElt);

$textNode = $domDoc->createTextNode('Wow, it works!');
$subNode->appendChild($textNode);

echo htmlentities($domDoc->saveXML());

S'il vous plaît voir ma réponse ici . Comme dreamwerx.myopenid.com , il est possible de le faire avec SimpleXML , mais le L’extension DOM serait le moyen le plus efficace et le plus flexible. En outre, il existe une troisième méthode: utiliser XMLWriter . C'est beaucoup plus simple à utiliser que le DOM et c'est donc ma manière préférée d'écrire des documents XML à partir de rien.

$w=new XMLWriter();
$w->openMemory();
$w->startDocument('1.0','UTF-8');
$w->startElement("root");
    $w->writeAttribute("ah", "OK");
    $w->text('Wow, it works!');
$w->endElement();
echo htmlentities($w->outputMemory(true));

Au fait: DOM signifie D document O bject M odel; C’est l’API normalisée en documents XML.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top