J'utilise un lecteur XML pour rechercher dans un fichier de configuration XML que nous utilisons. Je veux trouver les valeurs sous une certaine clé et pouvoir les changer ou les ajouter si elles n'existent pas.Recherche d'une valeur dans un segment xml à l'aide de XmlReader en C#
XML Exemple
<DBSimulatorConfigurations>
<Configurations>
<DBSimulatorConfiguration>
<Key>Test1</Key>
<Submit>0</Submit>
<Amend>0</Amend>
<Update>0</Update>
<Delete>1</Delete>
<ResponseTimeInSeconds>100</ResponseTimeInSeconds>
</DBSimulatorConfiguration>
<DBSimulatorConfiguration>
<Key>Test2</Key>
<Submit>0</Submit>
<AutoUpdate>0</AutoUpdate>
<Amend>0</Amend>
<Update>0</Update>
<Delete>1</Delete>
<ResponseTimeInSeconds>100</ResponseTimeInSeconds>
</DBSimulatorConfiguration>
<DBSimulatorConfiguration>
</Configurations>
</DBSimulatorConfigurations>
code jusqu'à présent ... commenté peu ne trouve pas la valeur dans « Test1 »
XmlReader reader = XmlReader.Create("C:\\<path>\\DBConfigs.xml");
while(reader.Read())
{
if (reader.ReadToDescendant("Key"))
{
reader.Read();
if (reader.Value == "Test1")
{
Console.WriteLine("Found_1 {0}", reader.Value);
// Doesn't work :(
// reader.Read();
//if (reader.ReadToDescendant("Submit")) {
// Console.WriteLine("Value for Submit is {0}", reader.Value);
//}
}
if (reader.Value == "Test2")
{
Console.WriteLine("Found_2 {0}", reader.Value);
}
reader.Read(); //this moves reader to next node which is text
if (reader.ReadToDescendant("Full.2")) {
Console.WriteLine("Found {0}", reader.Value);
}
}
Mais ce que je veux faire est alors trouver et changement la valeur pour 'Soumettre' ou 'Modifier' etc ou s'il n'y a pas d'entrée 'Envoyer' alors j'en ajouterai une.
Mais d'abord, j'aimerais pouvoir trouver et modifier les valeurs de Test1.
Tu ne peux pas utiliser LINQ pour XML et sa [méthode setElement] (https://docs.microsoft.com/en-us/dotnet/api/system.xml.linq.xelement.setelementvalue?view=netframework- 4.7)? –
Si vous modifiez votre XML, il sera beaucoup plus facile d'utiliser LINQ to XML pour le faire. Voir [Linq to XML - mettre à jour/modifier les nœuds d'un document XML] (https://stackoverflow.com/q/331502/3744182) ou [Mettre à jour XML avec C# en utilisant Linq] (https://stackoverflow.com/q/1487653) pour commencer. – dbc
Si vous voulez vraiment, vraiment faire des transformations en flux continu de XML en utilisant simplement XmlReader et XmlWriter, vous pouvez commencer par combiner les classes XmlReader et XmlWriter pour des transformations en continu simples (https://blogs.msdn.microsoft.com/mfussell/2005/02/12/combination-the-xmlreader-et-xmlwriter-classes-for-simple-streaming-transformations /). – dbc