Beste tweakers,
Ik heb op het moment een uitdaging met System.Xml.XmlDocument. Ik laad daar bijvoorbeeld de volgende XML in:
Vervolgens doe ik een doc.DocumentElement.SelectSingleNode("//elementA").
De XmlNode die ik dan krijg is ook de <elementA>, deze heeft 3 childnodes. Helemaal mooi. Nu moet ik daar de waarde van instellen op bijvoorbeeld "Joepie", dus ik doe myNode.InnerText = "Joepie"; Het resultaat is dan als volgt:
Dus op de een of andere in mijn ogen nog belachelijke manier zet hij de waarde wel, maar zijn alle childnodes meteen verdwenen.
Als je, voordat je de InnerText zet kijkt wat de waarde is van InnerText op de rootnode elementA, dan blijkt dit (in dit voorbeeld) ook 012 te zijn, dus alle waarden van de childnodes bij elkaar.
Het is dus duidelijk dat hij de childnodes overschrijft, terwijl ik toch de InnerText zet en niet de InnerXml. Ik heb geprobeerd de Value property te gebruiken maar die is helaas read-only.
Als ik ga googlen dan zie ik dingen als "XmlNode.InnerText is doing exactly what it is supposed to do, it "Gets or sets the concatenated values of the node and all its child nodes. ", maar ik kan nog nergens een site vinden die aangeeft hoe je dus de value van alleen dat specifieke element kan zetten op een XmlNode object (zodat je dus niet alle childnodes kwijt raakt).
Iemand enig idee?
Ik heb op het moment een uitdaging met System.Xml.XmlDocument. Ik laad daar bijvoorbeeld de volgende XML in:
code:
1
2
3
4
5
6
7
| <xml> <elementA attribuut1="waarde" attribuut2="waarde"> <Childnode1>0</Childnode1> <Childnode2>1</Childnode2> <Childnode3>2</Childnode3> </elementA> </xml> |
Vervolgens doe ik een doc.DocumentElement.SelectSingleNode("//elementA").
De XmlNode die ik dan krijg is ook de <elementA>, deze heeft 3 childnodes. Helemaal mooi. Nu moet ik daar de waarde van instellen op bijvoorbeeld "Joepie", dus ik doe myNode.InnerText = "Joepie"; Het resultaat is dan als volgt:
code:
1
2
3
| <xml> <elementA attribuut1="waarde" attribuut2="waarde">Joepie</elementA> </xml> |
Dus op de een of andere in mijn ogen nog belachelijke manier zet hij de waarde wel, maar zijn alle childnodes meteen verdwenen.
Als je, voordat je de InnerText zet kijkt wat de waarde is van InnerText op de rootnode elementA, dan blijkt dit (in dit voorbeeld) ook 012 te zijn, dus alle waarden van de childnodes bij elkaar.
Het is dus duidelijk dat hij de childnodes overschrijft, terwijl ik toch de InnerText zet en niet de InnerXml. Ik heb geprobeerd de Value property te gebruiken maar die is helaas read-only.
Als ik ga googlen dan zie ik dingen als "XmlNode.InnerText is doing exactly what it is supposed to do, it "Gets or sets the concatenated values of the node and all its child nodes. ", maar ik kan nog nergens een site vinden die aangeeft hoe je dus de value van alleen dat specifieke element kan zetten op een XmlNode object (zodat je dus niet alle childnodes kwijt raakt).
Iemand enig idee?