D'autres ont suggéré des solutions LINQ to XML, ce que j'utiliserais aussi, si possible. Si vous êtes bloqué avec .NET 2.0, utilisez XmlDocument
ou XmlReader
.
Mais ne le font pas essayer de manipuler la chaîne brute vous en utilisant Substring
et IndexOf
. Utilisez une API XML de une description de. Sinon, vous va se tromper. Il s'agit d'utiliser le bon outil pour le travail. Parsing XML correctement est un morceau significatif de travail - travail qui a déjà été fait.
Maintenant, juste pour en faire une réponse complète, voici un programme court mais complet en utilisant vos données d'échantillon:
using System;
using System.Xml.Linq;
class Test
{
static void Main()
{
string response = @"<?xml version='1.0' encoding='utf-8'?>
<upload><image><name></name><hash>Some text</hash></image></upload>";
XDocument doc = XDocument.Parse(response);
foreach (XElement hashElement in doc.Descendants("hash"))
{
string hashValue = (string) hashElement;
Console.WriteLine(hashValue);
}
}
}
Il est évident que cette boucle de volonté sur tous les hash
éléments. Si vous n'en voulez qu'un, vous pouvez utiliser doc.Descendants("hash").Single()
ou doc.Descendants("hash").First()
en fonction de vos besoins.
Notez que la conversion que j'ai utilisée ici et la propriété Value
renverront la concaténation de tous les nœuds de texte dans l'élément. J'espère que cela vous convient - ou vous pourriez obtenir seulement le premier nœud de texte qui est un enfant direct si nécessaire.
fonctionne parfaitement!merci pour la solution complète – user257412