Depuis GMail a permis d'importer et d'exporter les filtres de messagerie, je voudrais gérer les fichiers XML qui sont exportés à partir de GMail en utilisant un script PHP, car il y a quelques known issues avec le nombre de caractères dans les filtres de recherche. J'ai trouvé la fonction simplexml_load_file dans PHP, et j'ai exécuté var_dump() par rapport à l'exportation effectuée, mais je ne semble pas pouvoir accéder à l'espace de noms des applications dans le fichier XML généré. Suite à diverses pages dans le manuel PHP, j'ai créé ce script très simple pour lire le code XML afin que je puisse commencer à traiter les filtres que j'ai déjà créés. Malheureusement, il semble manquer les parties clés!Utiliser PHP pour gérer les fichiers XML de GMail Mail Filter
<pre><?php
if(file_exists("mailfilters.xml")) {
$xml = simplexml_load_file("mailfilters.xml");
$namespaces = $xml->getNamespaces(true);
foreach ($namespaces as $prefix => $ns) {
$xml->registerXPathNamespace($prefix, $ns);
}
var_dump($xml);
} else {
die("Failed to open filter file");
}
?></pre>
Cela renvoie ces données (extrait)
["entry"]=>
array(268) {
[0]=>
object(SimpleXMLElement)#3 (5) {
["category"]=>
object(SimpleXMLElement)#271 (1) {
["@attributes"]=>
array(1) {
["term"]=>
string(6) "filter"
}
}
["title"]=>
string(11) "Mail Filter"
["id"]=>
string(45) "tag:mail.google.com,2008:filter:1284991916868"
["updated"]=>
string(20) "2010-10-28T11:59:31Z"
["content"]=>
object(SimpleXMLElement)#272 (0) {
}
}
[1]=>
object(SimpleXMLElement)#4 (5) {
["category"]=>
object(SimpleXMLElement)#272 (1) {
["@attributes"]=>
array(1) {
["term"]=>
string(6) "filter"
}
}
["title"]=>
string(11) "Mail Filter"
["id"]=>
string(45) "tag:mail.google.com,2008:filter:1284991925003"
["updated"]=>
string(20) "2010-10-28T11:59:31Z"
["content"]=>
object(SimpleXMLElement)#271 (0) {
}
}
Voici un extrait du fichier XML que j'ai téléchargé aujourd'hui, utilisé pour créer la sortie ci-dessus:
<?xml version='1.0' encoding='UTF-8'?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:apps='http://schemas.google.com/apps/2006'>
<title>Mail Filters</title>
<id>tag:mail.google.com,2008:filters:1284991916868,...,1287734777820</id>
<updated>2010-10-28T11:59:31Z</updated>
<author>
<name>My Name</name>
<email>[email protected]</email>
</author>
<entry>
<category term='filter'></category>
<title>Mail Filter</title>
<id>tag:mail.google.com,2008:filter:1284991916868</id>
<updated>2010-10-28T11:59:31Z</updated>
<content></content>
<apps:property name='from' value='[email protected]'/>
<apps:property name='shouldArchive' value='true'/>
<apps:property name='shouldTrash' value='true'/>
</entry>
<entry>
<category term='filter'></category>
<title>Mail Filter</title>
<id>tag:mail.google.com,2008:filter:1284993579743</id>
<updated>2010-10-28T11:59:31Z</updated>
<content></content>
<apps:property name='subject' value='Some Relevant Subject'/>
<apps:property name='label' value='MyCoolLabel'/>
<apps:property name='shouldArchive' value='true'/>
</entry>
Autres « applications : verbe "propriété":
<apps:property name='hasTheWord' value=''/>
<apps:property name='shouldAlwaysMarkAsImportant' value=''/>
<apps:property name='doesNotHaveTheWord' value=''/>
Quelle est la question? En tant que mineur, obtenir les déclarations d'espaces de noms de la source d'entrée de cette manière n'est pas pratique. Vous devez connaître votre schéma d'entrée à l'avance et ajouter l'URI d'espaces de noms aux liaisons de préfixes en conséquence. –
Je ne vois pas comment cela est même légèrement lié à XPath ??? –
Merci Dimitre - Je remarque que quelqu'un a supprimé la balise xpath.Désolé, je suis assez nouveau pour simplexml, et je pensais que les deux étaient entrelacés! – JonTheNiceGuy