Ich versuche gerade einen Xml-substring auf seine vollstaendigkeit zu pruefen.
Der grund ist, dass ich von einem Stream lese der mir immer nur teilstuecke liefert.
Dazu verwende ich einen StringBuffer um den XML-String zusammenzusetzen.
Regex war noch nie wirklich meine Staerke, und deshalb bitte ich euch um eure Hilfe!
Mein Momentaner stand ist folgender:
Code:
public class RegexTest {
public static void main(String[] args) {
// String regex = "<MSG(>|\\sID=\"\\d\">)[\\p{ASCII}[^(</MSG>)]]+";
// String regex = "<MSG(>|\\sID=\"\\d\">)[\\p{ASCII}&&[^</MSG>]]*";
// String regex = "[<MSG(>|\\sID=\"\\d\">)]{1}[\\p{ASCII}]+</MSG>";
String regex = "<MSG>|<MSG\\sID=\"\\d\">[\\p{ASCII}]*</MSG>";
String message = "d><MSG><MSG ID=\"2\"><INFO><TYPE> 6 </TYPE></INFO></MSG><MSG ID=\"1\"><INFO><TYPE>7</TYPE></INFO></MSG></MSG>";
System.out.println( "Regex: " + regex );
System.out.println( message + "\nmessage end\n" );
Pattern pattern = Pattern.compile( regex );
Matcher matcher = pattern.matcher( message );
while ( matcher.find() ) {
String m = matcher.group();
System.out.println( m );
}
}
}
Nun ist die Ausgabe aber folgende:
Code:
<MSG>
<MSG ID="2"><INFO><TYPE> 6 </TYPE></INFO></MSG><MSG ID="1"><INFO><TYPE>7</TYPE></INFO></MSG></MSG>
und nicht
Code:
<MSG ID="2"><INFO><TYPE> 6 </TYPE></INFO></MSG>
<MSG ID="1"><INFO><TYPE>7</TYPE></INFO></MSG>
Ich hoffe mir kann dabei einer Helfen! Ich werde zwar weiter probieren, bin aber sicher ihr seit 100mal schneller als ich!
mfg
nul
Lesezeichen