我尝试使用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>
您能告诉我解决此问题的最佳方法吗?用户输入可以是来自用户的任何文本选择。
提前致谢 加金德拉
答案 0 :(得分:0)
试一试:
String output = input.replaceAll("<b>.*</b>", "");