2010-01-20 4 views
2
<data> 
    <gig id="1"> 
    <date>December 19th</date> 
    <venue>The Zanzibar</venue> 
    <area>Liverpool</area> 
    <telephone>Ticketline.co.uk</telephone> 
    <price>£6</price> 
    <time>Time TBA</time> 
</gig> 
<gig id="2"> 
    <date>Sat. 16th Jan</date> 
    <venue>Celtic Connection, Classic Grand</venue> 
    <area>Glasgow</area> 
    <telephone>0141 353 8000</telephone> 
    <price>£17.50</price> 
    <time>7pm</time> 
</gig> 

Dire si je voulais voir les valeurs de "date" de l'élément de concert qui a un attribut de 2 comment pourrais-je faire cela en utilisant php?Recherche de la valeur d'un enfant dans un attribut spécifique

Fondamentalement, je veux supprimer l'id dire 2, puis le créer à nouveau ou juste le modifier.

en utilisant simpleXML comment puis-je supprimer une partie?

Répondre

1

Pour rechercher des nœuds, utilisez XPath.

$data->xpath('//gig[@id="2"]'); 

Il retourne un tableau avec tous <gig/> nœuds avec un attribut id dont la valeur est 2. En règle générale, il contient l'élément 0 ou 1. Vous pouvez les modifier directement. Par exemple:

$data = simplexml_load_string(
    '<data> 
     <gig id="1"> 
      <date>December 19th</date> 
      <venue>The Zanzibar</venue> 
      <area>Liverpool</area> 
      <telephone>Ticketline.co.uk</telephone> 
      <price>£6</price> 
      <time>Time TBA</time> 
     </gig> 
     <gig id="2"> 
      <date>Sat. 16th Jan</date> 
      <venue>Celtic Connection, Classic Grand</venue> 
      <area>Glasgow</area> 
      <telephone>0141 353 8000</telephone> 
      <price>£17.50</price> 
      <time>7pm</time> 
     </gig> 
    </data>' 
); 

$nodes = $data->xpath('//gig[@id="2"]'); 

if (empty($nodes)) 
{ 
    // didn't find it 
} 

$gig = $nodes[0]; 
$gig->time = '6pm'; 

die($data->asXML()); 

Suppression des noeuds arbitraires est un ordre de grandeur plus complexe, il est donc beaucoup plus facile de modifier les valeurs plutôt que de supprimer/recréer le nœud.

+0

Je continue à recevoir cette erreur, Erreur irrécupérable: Appel à une fonction membre xpath() sur un non-objet dans /var/www/sm16832/public_html/cms/index.php sur la ligne 45 –

+0

Dans cet exemple, $ data est votre objet SimpleXMLElement. Pour éviter toute confusion, nommez toujours vos variables PHP après le noeud qu'elles représentent. Si le nœud racine est '' alors votre variable PHP devrait être '$ data'. –

Questions connexes