清空xml中标记之间的textcontent

时间:2016-02-08 16:53:27

标签: java regex xml

我尝试使用dom解析器解析xml以下。解析xml时抛出错误。这是因为某些特殊字符存在于' b'的cdata标签内。元件。我们只需要c和e元素的文本内容。所以我试图做空的' b'元素和使用indexof函数来获取c和e元素的文本内容。

   <a><b><![CDATA[userinput]]></b><c>text of c</c><d></d><e>text of e</e></a>

以下是用于模式匹配的代码

Pattern pattern = Pattern.compile("<b>.*?</b>", Pattern.DOTALL |  Pattern.UNICODE_CASE | Pattern.MULTILINE);
Matcher matcher = pattern.matcher(input);
StringBuilder builder = new StringBuilder();
int lastIndex = 0;
while (matcher.find()) {
    builder.append(input.substring(lastIndex, matcher.start()));
    lastIndex = matcher.end();
}
builder.append(input.substring(lastIndex));

以下场景中的场景失败

 <a><b><![CDATA[test 123 </b><c>inside</c>]]></b><c>outside</c><d></d><e>out side</e></a>

O / P: -

 <a><c>inside</c>]></b><c>outside</c><d></d><e>out side</e></a>

预期: -

<a><c>outside</c><d></d><e>out side</e></a>

您能告诉我解决此问题的最佳方法吗?用户输入可以是来自用户的任何文本选择。

提前致谢 加金德拉

1 个答案:

答案 0 :(得分:0)

试一试:

String output = input.replaceAll("<b>.*</b>", "");