C# et modification d'un fichier XML
Bonjour à tous.
Je m'arrache les cheveux depuis un petit moment sur un truc tout con.
A partir d'un fichier xml pré-existant ayant la structure suivante :
Code:
1 2 3 4 5 6
| <root>
<child1>value1</child1>
<child2>value2</child2>
<child4>value4</child4>
<child5>value5</child5>
</root> |
Je voudrais insérer une node <child3>value3</child3> entre child2 et child4 pour obtenir ça :
Code:
1 2 3 4 5 6 7
| <root>
<child1>value1</child1>
<child2>value2</child2>
<child3>value3</child3>
<child4>value4</child4>
<child5>value5</child5>
</root> |
Mon problème, c'est que la bibliothèque System.Xml propose les méthodes qui ne génèrent pas les indentations et retours à la ligne adéquat.
Avec le code suivant :
Code:
1 2 3 4 5 6 7
| XmlDocument docXML = new XmlDocument();
docXML.Load(fileXML);
XmlNode root = docXML.DocumentElement;
XmlNode child2Node = root.SelectSingleNode("child2");
XmlNode child3Node = docXML.CreateElement("child3");
child3Node.InnerText = value3;
root.InsertAfter(child3Node, child2Node); |
Je me retrouve avec ça :
Code:
1 2 3 4 5 6
| <root>
<child1>value1</child1>
<child2>value2</child2><child3>value3</child3>
<child4>value4</child4>
<child5>value5</child5>
</root> |
De la même manière, avec ça :
Code:
1 2 3 4 5 6 7
| XmlDocument docXML = new XmlDocument();
docXML.Load(fileXML);
XmlNode root = docXML.DocumentElement;
XmlNode child4Node = root.SelectSingleNode("child4");
XmlNode child3Node = docXML.CreateElement("child3");
child3Node.InnerText = value3;
root.InsertBefore(child3Node, child4Node); |
Je me retrouve avec ça :
Code:
1 2 3 4 5 6
| <root>
<child1>value1</child1>
<child2>value2</child2>
<child3>value3</child3><child4>value4</child4>
<child5>value5</child5>
</root> |
Je retrouve le même problème avec la méthode AppendChild si j'essaie d'insérer ma node sans me soucier de sa position précise :
Code:
1 2 3 4 5 6
| XmlDocument docXML = new XmlDocument();
docXML.Load(fileXML);
XmlNode root = docXML.DocumentElement;
XmlNode child3Node = docXML.CreateElement("child3");
child3Node.InnerText = value3;
root.AppendChild(child3Node); |
ce qui donne ça :
Code:
1 2 3 4 5 6
| <root>
<child1>value1</child1>
<child2>value2</child2>
<child4>value4</child4>
<child5>value5</child5>
<child3>value3</child3></root> |
Y a-t'il quelque chose que je n'ai pas pris en compte?
Merci de votre aide.