Ist es möglich, eine REGEX (search replace) zu schreiben, die, wenn sie auf einer XML-Zeichenkette ausgeführt wird, diese XML-Zeichenkette schön eingerückt ausgibt?
Wenn ja, wie lautet der REGEX :)
Ist es möglich, eine REGEX (search replace) zu schreiben, die, wenn sie auf einer XML-Zeichenkette ausgeführt wird, diese XML-Zeichenkette schön eingerückt ausgibt?
Wenn ja, wie lautet der REGEX :)
En dieser Link :
private static Regex indentingRegex=new Regex(@"\<\s*(?<tag>[\w\-]+)(\s+[\w\-]+\s*=\s*""[^""]*""|'[^']*')*\s*\>[^\<]*\<\s*/\s*\k<tag>\s*\>|\<[!\?]((?<=!)--((?!--\>).)*--\>|(""[^""]*""|'[^']'|[^>])*\>)|\<\s*(?<closing>/)?\s*[\w\-]+(\s+[\w\-]+\s*=\s*""[^""]*""|'[^']*')*\s*((/\s*)|(?<opening>))\>|[^\<]*", RegexOptions.ExplicitCapture|RegexOptions.Singleline);
public static string IndentXml(string xml) {
StringBuilder result=new StringBuilder(xml.Length*2);
int indent=0;
for (Match match=indentingRegex.Match(xml); match.Success; match=match.NextMatch()) {
if (match.Groups["closing"].Success)
indent--;
result.AppendFormat("{0}{1}\r\n", new String(' ', indent*2), match.Value);
if (match.Groups["opening"].Success&&(!match.Groups["closing"].Success))
indent++;
}
return result.ToString();
}
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.