[Résolu] remplacer la valeur d'un attibut dans un doc

remplacer la valeur d'un attibut dans un doc [Résolu] - C#/.NET managed - Programmation

Marsh Posté le 15-03-2006 à 09:29:55    

Bonjour,
J'ai un document XML (pour etre précis une vue de InfoPath en XSL mais le résultat est le même) dans lequel j'ai des balises  

Code :
  1. <img src="667A3618.gif"/>

Je chargé mon fichier avec qq chose du genre

Code :
  1. XmlDocument myXmlDocument = new XmlDocument();
  2. myXmlDocument.LoadXml(strXHTML);

Et j'aimerais ajouter un répertoire avant la source de mon image donc que ma balise devienne

Code :
  1. <img src="mon_rep/667A3618.gif"/>

J'ai donc essayé

Code :
  1. String strStyle = null;
  2. XmlNodeList styleList = myXmlDocument.SelectNodes("html/head/style" );
  3. foreach(XmlNode node in styleList) {
  4.    node.Attributes["controlStyle"] = "mon_rep" + node.Attributes["controlStyle"];
  5. }


Mais hélas node est une propriété en lecture seule apparemment comment faire alors???
 
D'avance merci...
 
Ben


Message édité par the big ben le 22-03-2006 à 14:28:52
Reply

Marsh Posté le 15-03-2006 à 09:29:55   

Reply

Marsh Posté le 16-03-2006 à 12:10:30    

up

Reply

Marsh Posté le 20-03-2006 à 14:24:00    

vraiment personne??? snif

Reply

Marsh Posté le 21-03-2006 à 19:49:25    

ne serait il pas possible de charger ton xml dans un dataset grâce à la méthode "readxml" du dataset. Faire la modif dans le dataset et de réécrire l'xml grâce à la méthode "writexml" du dataset. A voir.  
 
sinon pour ton problème, utilise "ReplaceChild" (Replaces the child node oldChild with newChild node). ça pourait faire l'affaire. car un attribut est un noeud dans l'arbre DOM. regarde donc de ce coté la.
 
Apparemment, toutes les propriétés sont read-only dans le XMLNode. Regarde donc de coté la ou éventuellement la propriété Item du node. Peut etre qu'il y a moyen de faire quelque chose avec.
 
Plus d'informations:
http://msdn.microsoft.com/library/ [...] stopic.asp
 
Petite remarque:
XmlNodeList styleList = myXmlDocument.SelectNodes("html/head/style" );
 
Ton document ressemble bien à ça?  
<html>
<head><style><img src="..." /></style></head>
</html>
 
car l'instruction xpath html/head/style n'ira recherché les balises qu'a l'intérieur de style dans head dans html. Donc fait attention à ce que tu fais.  
 


Message édité par moi23372 le 21-03-2006 à 19:53:22
Reply

Marsh Posté le 22-03-2006 à 09:04:50    

Le dataset c'est peut etre une bonne idée c'est vrai je vais regarder mais c'est un chtit peu lourd. Sinon le replace node ... je te tient au courrant!
 
Je me suis effectivement trompé pour le html/head/style c'est juste en recopiant le code mais sinon oui c'est ok

Reply

Marsh Posté le 22-03-2006 à 14:28:37    

oki en chippotant pas mal et via la fonciton ReplaceChild + récursivité j'ai finnalement réussi!  
 
Un grand merci!

Reply

Marsh Posté le 22-03-2006 à 15:10:44    

de rien c'est avec plaisir ;-)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed