2012-04-09 12 views
1

Ich habe eine XML-Datei, die ich eine XML-Datei formatieren möchte, um Tags wie "<scientific_max></scientific_max>" zu entfernen. benutzte ich diesen Code, aber es hat nicht funktioniertVerwenden von regulären Ausdruck, um unnötige XML-Tags zu entfernen

String regex = "<([a-z_]+)></($1)>"; 
result = result.replaceAll(regex, ""); 

Haben Sie einen schönen Tag!

+8

Wie immer mit XML und HTML, nicht regexp, das zu tun verwenden. Verwenden Sie für XML eine beliebige verfügbare XML-Bibliothek. Selbst ein SAXParser kann diese Aufgabe erfüllen. Regexp sind dafür nicht geeignet! –

+0

Richtig, Bibliotheken bieten bessere Unterstützung. Zum Beispiel würde JAXB Ihnen ein einfaches Objekt mit allen XML-Eigenschaften geben, die auf einem bestimmten Knoten definiert sind. – Dan

+0

In der Tat möchte ich Regular Expression verwenden, weil der Prozess nicht zu lang ist und ich nicht viele Wiederholungen zu tun habe. Darüber hinaus kann die Verwendung einer anderen dritten Bibliothek den Prozess lösen, der nicht gut ist. –

Antwort

1

Wenn Sie darauf bestehen, diese Aufgaben mit regulären Ausdrücken zu tun können Sie gerne wissen, dass back references als \n in Java dargestellt werden, statt $n:

String regex = "<([a-z_]+)></\\1>"; 
result = result.replaceAll(regex, ""); 
+0

Ich habe Angst zu sagen, dass diese Regex nicht das erwartete Ergebnis zurückgibt. Tatsächlich stimmte es nicht mit meiner Java-Zeichenfolge überein. –

+1

@bouhmid_tun Funktioniert gut mit mir. Was war deine Schnur? Vielleicht einige Leerzeichen oder Zeilenumbrüche zwischen den Tags? Deshalb haben Guillaume und andere darauf hingewiesen, dass reguläre Ausdrücke keine gute Idee sind, um XML zu parsen. – Howard

+0

Meine XML-Datei enthält Zeichen wie folgt aus: Spalte PS: Ich kann nicht die ganze Datei Platzmangel fügen aber diese Daten geben Ihnen einen ideo, wie meine Datei scheint . –

1

Java ist nicht die beste, wenn es um Muster & passend String Ersatz für Dateien wenn Sie erwägen, diese Daten auf Tags basieren zu extrahieren, verwenden jaxb

wenn Sie dauerhafte Änderung vornehmen möchten, um xML können Sie sed verwenden

sed -i 's/< \ * scientific_max> * $ //' input_xml.xml

Verwandte Themen