Hi Hi,
ich schreibe ein kleines C#-Programm, das eine xml-Datei liest and alle Wörter zwischen 2 klammern ausgibt. Allerdings wird nur das erste Wort in Klammern ausgegeben.
Bitte um Hilfe!
C#-Programm:
static string ReadInnerText()
{
using (var fs = new FileInfo(@"C:\....\XML.xml").OpenText())
{
string text = fs.ReadToEnd();
string ba = @".*\((?<inner>.*)\).*";
Match match = Regex.Match(text, ba);
return match.Groups["inner"].Value;
}
}
Hallo,
wenn du XML hast, dann benutz auch eine der gängigen Methoden um XML zu verarbeiten wie Linq to XML (XDocument) bzw. das klassische XML DOM XMLDocument. Mit regulären Ausdrücken zu arbeiten ist alles andere als zielführend.
Baka wa shinanakya naoranai.
Mein XING Profil.
Hallo,
der Regex "konsumiert" den kompletten string.
Außerdem mußt du die matches in einer Schleife abfragen.
Hier ein funktionierender Vorschlag:
string text = @"asdrer(erer)fasdf<abc>asd(urer)fasdf<ts>adf</ts></abc>";
string ba = @"\((?<inner>[^\)]*)\)";
Match match = Regex.Match(text, ba);
foreach (Match __match in Regex.Matches(text, ba))
{
var __res = __match.Groups["inner"].Value;
}
Noch eine Frage von mir. Wenn ich in der Foreach-Schleife schreibe:
foreach (var __match in Regex.Matches(text, ba))
wird aus der MatchCollection ein Object für var als Typ gesetzt.
Warum diese "Schwäche" bei MatchCollection? Ist das kein IEnumerable? Wieso läuft dann foreach trotzdem so:
foreach (var __match in Regex.Matches(text, ba))
{
var __res = ((Match)__match).Groups["inner"].Value;
}
??
Dazu reicht ein Blick in die Doku (od. jetzt dem Link von xxxprod folgen).
Bitte beachte [Hinweis] Wie poste ich richtig? Punkt 1.1.
Hallo zedream,
nicht dass tallas Antwort untergeht, denn das ist bei XML der einzig vernüftige Weg: mit den speziell für die XML-Verarbeitung erstellten Techniken sollte auch XML verarbeitet werden. Am einfachsten gehts mit Linq to XML in Form von XDocument und XElement.
Regex ist ein mächtiges Werkzeug für die String-Verarbeitung, aber für XML gibts halt einfacheres/besseres.
mfG Gü
Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.
"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"
ah! Danke.
Die Typisierung bei IEnumerable ist mir nicht klar.
Ich werde mal var auch mit diesem Link versuchen zu verstehen:
Typbeziehungen in LINQ-Abfragevorgängen (C#)
Hallo Ludus,
Die Typisierung bei IEnumerable ist mir nicht klar.
IEnumerable ist einfach untypsisiert.
Aber das soll hier nicht das Thema sein, zumal es unter [Hinweis] Wie poste ich richtig? Punkt 1.1, 1.1.1, 1.2 fällt.
mfG Gü
Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.
"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"