2012-04-09 16 views
1

"<scientific_max></scientific_max>"のようなタグを削除するXMLファイルをフォーマットしたいXMLファイルがあります。 は私がそのコードを使用するが、それは素敵な一日を正規表現を使用して不要なXMLタグを削除する

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

を動作しませんでした!

+8

いつもXMLとHTMLと同様に、regexpを使用しないでください。 XMLのためにそこに利用可能な任意のXMLライブラリを使用してください。 SAXParserでさえその仕事をすることができます。正規表現はそれには適していません! –

+0

右のライブラリはより良いサポートを提供します。たとえば、JAXBは、指定されたノードで定義されたすべてのXMLプロパティを持つプレーンオブジェクトを提供します。 – Dan

+0

実際、プロセスがあまり長くないため、正規表現を使用したいのですが、繰り返しはあまりありません。さらに、別の第3のライブラリを使用することによって、プロセスの問題を解決する可能性があります。 –

答えて

1

あなたが正規表現でこのようなタスクを行うことを主張した場合、あなたはback referencesはなく$nのJavaで\nとして表現されていることを知りたいかもしれません:

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

私はこの正規表現は期待された結果を返さないと言うのが怖いです。実際には、私のJava Stringと一致しませんでした。 –

+1

@bouhmid_tun私とうまく動作します。あなたの弦は何でしたか?たぶん、いくつかの空白や改行がタグ間にありますか?だから、Guillaumeと他の人が、正規表現はXMLを解析するのには良い考えではないかもしれないと指摘したのです。 – Howard

+0

私のXMLファイルは次のように文字が含まれています PS:私は、宇宙のすべてのファイルの欠如を貼り付けることはできませんが、このデータはあなたに私のファイルはそうどのようにIDEOを与えることができます。 –

1

それは&をパターンマッチングすることになるとJavaが最善ではありませんあなたがあなたをXMLに永続的な変更をしたい場合は、ファイル 上の文字列置換あなたがタグに基づいてデータを抽出し、これを検討している場合は、使用JAXB

をsedを使用することができます

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

関連する問題