我有一个400行的XML字符串,它包含重复两次的以下标记。我想删除这些标签
<Address>
<Location>Beach</Location>
<Dangerous>
<Flag>N</Flag>
</Dangerous>
</Address>
我正在使用以下正则表达式模式,但它没有替换
xmlRequest.replaceAll("<Address>.*?</Address>$","");
我可以在Notepad ++中通过选择查找/替换对话框中[x].matches newline
单选按钮旁边的Regular Expression
复选框来执行此操作
任何人都可以说我的正则表达式有什么问题
答案 0 :(得分:4)
xmlRequest.replaceAll("<Address>[\\s\\S]*?</Address>","");
。*不包含\ n \ r,所以需要使用[\ s \ S]来匹配所有
答案 1 :(得分:0)
尽可能不正确地做你所建议的事情。 (关于欢闹和启蒙,请参阅https://stackoverflow.com/a/1732454/6552039。)
你应该能够用org.w3c.dom.Document解析器摄取你的xml,然后做一个getElementsByTagName(“Address”),并让它.remove(Element)成为第二个。 (假设对“以下标签重复两次”的特定解释。
答案 2 :(得分:0)
使用JSoup的解决方案
Your app has entered a break state, but there is no code to show because all threads were executing external code (typically system or framework code).
答案 3 :(得分:-1)
尝试使用Jsoup。
String str = "<Address>\n"
+ "<Location>Beach</Location>\n"
+ "<Dangerous>\n"
+ " <Flag>N</Flag>\n"
+ "</Dangerous>\n"
+ "</Address>\n";
Document doc = Jsoup.parse(str);
System.out.println(doc.text());
输出:
Beach N