2010-11-17 8 views
0

alt textJe veux éditer le fichier xml

J'ai modifié la structure du fichier d xml. Je veux éditer la valeur du visible

+1

Vous devez développer cette question avec l'échantillon XML (avant et après le changement) pour obtenir une réponse décente –

+2

Le XML exemple fournir n'est pas valide. Les balises c et d n'ont pas d'accolade de fermeture. –

+0

@Scott - ni le second 'b' – KevinDTimm

Répondre

1

Vous pouvez utiliser ce modèle de code:

bool foobar() 
    { 
     XmlDocument doc = new XmlDocument(); 
     try 
     { 
      doc.Load(FileName); 
      XmlNodeList ns = doc.SelectNodes("a/d/e/f"); 
      if (ns.Count == 1) 
      { 

        ns[0].Attributes["visible"].Value = true; 
        doc.Save(FileName); 
        return (true); 
      } 
      else 
       return (false); 
     } 
     catch (Exception e) 
     { 
      return (false); 
     } 
    } 
+0

L'utilisation de true/false à la place des exceptions est une manière hautement non-idiomatique (et avec perte) d'indiquer le succès ou l'échec dans .NET. Les exceptions sont là pour une raison - utilisez-les! –

+0

Voulez-vous dire que je devrais remplir une exception au code parent? Et qu'en est-il de la performance dans cette situation? – texnedo

6

Eh bien, LINQ to XML, il est très facile de manipuler des documents XML, en supposant qu'ils sont assez petits pour être chargés en mémoire.

Par exemple:

var doc = XDocument.Load("Foo.xml"); 
foreach (var element in doc.Descendants("c")) 
{ 
    element.SetAttributeValue("value", "bb"); 
} 
doc.Save("Bar.xml"); 

Maintenant que définit l'attribut value pour chaque élémentc. Ce n'est pas clair si c'est ce que vous voulez ou non. Si ce n'est pas le cas, veuillez modifier votre question pour la rendre plus spécifique.

+0

Une dégaine sacrée, Batman! +1 – karlgrz

+0

En fait, pour que cela fonctionne ("SetAttribute" n'existe pas), utilisez le code: element.SetAttributeValue ("value", "bb"); – SwissCoder

+0

@SwissCoder: Oui, corrigé. –

Questions connexes