fallow
09-10-2007, 12:09
Hey,
ich habe ein Problem mit Java, XML und Regular Expressions: Ich will in einem XML-Fragment Tag-Namen ändern z.B.
<bla><blabla>data</blabla></bla>
zu
<10:bla><10:blabla>data</10:blabla></10:bla>
Ich habe folgenden Code für die Startags geschrieben. Der Matcher findet die entsprechenden Pattern. Das Problem ist, dass ich damit in eine Endlosschleife laufe, da nach dem replaceAll ja wieder neue Tags entstehen, die vom Matcher gefunden werden etc.
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegEx {
static String getNewStartTag(String s){
int a = s.length();
String string = s.substring(1, a-1);
string = ("<10:"+string+">");
return string;
}
public static void main(String[] args) {
StringBuffer s = new StringBuffer("<bla><blabla>data</blabla></bla>");
Pattern startTag = Pattern.compile("<\\w+>");
Matcher matcher = startTag.matcher(s);
String tmp = null;
while(matcher.find()){
tmp = s.substring(matcher.start(), matcher.end());
matcher.replaceAll(getNewStartTag(tmp));
}
System.out.println(s.toString());
}
}
Hat vielleicht jemand eine tolle Idee, das Problem zu umgehen ?
Danke,
lars
ich habe ein Problem mit Java, XML und Regular Expressions: Ich will in einem XML-Fragment Tag-Namen ändern z.B.
<bla><blabla>data</blabla></bla>
zu
<10:bla><10:blabla>data</10:blabla></10:bla>
Ich habe folgenden Code für die Startags geschrieben. Der Matcher findet die entsprechenden Pattern. Das Problem ist, dass ich damit in eine Endlosschleife laufe, da nach dem replaceAll ja wieder neue Tags entstehen, die vom Matcher gefunden werden etc.
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegEx {
static String getNewStartTag(String s){
int a = s.length();
String string = s.substring(1, a-1);
string = ("<10:"+string+">");
return string;
}
public static void main(String[] args) {
StringBuffer s = new StringBuffer("<bla><blabla>data</blabla></bla>");
Pattern startTag = Pattern.compile("<\\w+>");
Matcher matcher = startTag.matcher(s);
String tmp = null;
while(matcher.find()){
tmp = s.substring(matcher.start(), matcher.end());
matcher.replaceAll(getNewStartTag(tmp));
}
System.out.println(s.toString());
}
}
Hat vielleicht jemand eine tolle Idee, das Problem zu umgehen ?
Danke,
lars