1

間違った xml 文字列があり、正しいものを作成したい

<root val="yyy">
    <fol der val="attribute 1">myfolder</folder>
</root>

問題は、タグ「fol der」内の空白です。javaで正規表現を使用して<>タグ内(属性内ではなく)の空白を置き換えることは可能ですか? ありがとうございます

4

3 に答える 3

2

私は使用していたでしょうが(?<=[<]\w*)\s+、Javaの正規表現エンジンは後読みで量指定子をサポートしていません..

複数のスペースがある場合は、これを行う必要があります。

Matcher m=Pattern.compile("(?<=[<])(/?)\\s*(\\w*)\\s+(?!\\w+\\s*=)").matcher(xml);
while(m.find())
{
    xml=m.replaceAll("$1$2");
    m.reset(xml);   
}

これは属性名では機能しませんが

于 2013-09-30T13:15:56.703 に答える
0

XML が次のような場合:

<root val="yyy">
    <fo l der val="attribute 1">myfol d er</folder>
</root>

以下が機能するはずです:

final Pattern p = Pattern.compile("(?s)(?<=<).*?(?=/?>|\\s*\\w+\\s*=)");
Matcher m = p.matcher(data); // your XML
StringBuffer sb = new StringBuffer();
while (m.find()) {
    m.appendReplacement(sb, m.group().replace(" ", ""));
}
m.appendTail(sb);
data = sb.toString();
System.out.println(data);

出力:

<root val="yyy">
    <folder val="attribute 1">myfol d er</folder>
</root>

ライブデモ: http://ideone.com/TIrsQR

于 2013-09-30T13:38:50.233 に答える