Renommer xmlnodes à l'aide de c# dynamiquement
Je suis en utilisant le code ci-dessous pour renommer le xmlnode nom dynamiquement. Ça en boucle si le xml, mais il ne change pas le nom du nœud. Merci de m'aider à le faire.
XML exemple doucment
- <NewDataSet>
- <Table5>
<FLD_ID>62</FLD_ID>
<FLD_DATE>2013-03-12</FLD_DATE>
<FLD_MOD_DATE>2013-04-05</FLD_MOD_DATE>
<FLD_DESC>New Creation</FLD_DESC>
</Table5>
- </NewDataSet>
Nécessaire de DOCUMENT XML
- <rows>
- <row>
<cell>62</cell>
<cell>2013-03-12</cell>
<cell>2013-04-05</cell>
<cell>New Creation</cell>
</row>
- </rows>
Mon code est ici
XmlNode PackageListNode = hst_doc.SelectSingleNode("NewDataSet");
XmlNodeList PackageNodeList = PackageListNode.SelectNodes("Table5");
foreach (XmlNode node in PackageNodeList)
{
node.Name.Replace("Table5", "row");
foreach (XmlNode ls in node)
{
ls.Name.Replace(ls.Name, "cell");
}
}
- string est immuable!!!
- 1. Honnêtement, il peut être plus facile de recréer un autre arbre XML. 2. Assurez-vous que tout ce que vous utilisez prend en charge les nœuds ayant le même nom au même niveau. Qui ne peuvent pas être pris en charge. Jamais. 3. Regardez dans la récursivité pour la traversée des arbres XML. Il peut être plus complexe et dense, mais il peut mieux fonctionner dans de nombreuses circonstances.
Vous devez vous connecter pour publier un commentaire.
Que vous ne pouvez pas remplacer les noms d'élément dans un
XmlDocument
......d'un remplacement pour votre situation spécifique:
XmlDocument
et peuvent faire usage de l' .NET Framwork 3.5+XDocument
c'est vraiment beaucoup plus jolie et utilisables comme vu dans la réponse de Jeff Mercado.Chaîne.Remplacer renvoie une nouvelle chaîne, ce qui bien sûr, on aimerait:
qui pourrait aussi bien être
cependant, si vous regardez la documentation il est dit que XmlNode.Le nom est purement un "getter" et pas un "setter", de sorte que peut-être vous aurez besoin de créer de nouveaux nœuds pour les remplacer, il dépend de la mise en œuvre effective, depuis XmlNode est une classe abstraite.
Embrasser LINQ, l'embrasser!