Est-ce que les données xml bon, ou faut-il regarder comme elle?
S'il est html, le HTML Agility Pack est une enquête vaut - il fournit un DOM (similaire à XmlDocument) que vous pouvez utiliser pour interroger les données:
string input = @"<html>...some html content <b> etc </b> ...
<user> hello <b>mitch</b> </user>
...some html content <b> etc </b> ...
<message> some html <i>message</i> <a href....>bla</a> </message>
...some html content <b> etc </b> ...</html>";
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(input);
foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//user | //message"))
{
Console.WriteLine("{0}: {1}", node.Name, node.InnerText);
// or node.InnerHtml to keep the formatting within the content
}
Ce sorties:
user: hello mitch
message: some html message bla
Si vous voulez les balises de formatage, utilisez .InnerHtml au lieu de .InnerText.
Si elle est xml, puis à coder avec le spectre complet de XML, il serait préférable d'utiliser un analyseur XML. Pour les petits à mi taille xml, le charger dans un DOM, comme XmlDocument serait bien - alors interroger les noeuds (par exemple, « // * »). Pour un énorme xml, XmlReader peut être une option.
Si les données ne doit pas se soucier du xml complète, puis une regex simple, ne devrait pas être trop difficile ... un exemple simplifié (pas d'attributs, pas, pas d'espaces de noms XML imbriqué) pourrait être:
string input = @"blah <tag1> content for tag 1 </tag1> blop
<tag2> content for tag 2 </tag2> bloop
<tag3> content for tag 3 </tag3> blip";
const string pattern = @"<(\w+)>\s*([^<>]*)\s*</(\1)>";
Console.WriteLine(Regex.IsMatch(input, pattern));
foreach(Match match in Regex.Matches(input, pattern)) {
Console.WriteLine("{0}: {1}", match.Groups[1], match.Groups[2]);
}
Notez l'exemple HtmlAgilityPack mis à jour; Je suppose que cela fait ce dont vous avez besoin. –