使用Java Regex删除XML String中的XML标记和内容

时间:2017-03-20 01:40:50

标签: java regex xml

我有一个400行的XML字符串,它包含重复两次的以下标记。我想删除这些标签

<Address>
<Location>Beach</Location>
<Dangerous>
    <Flag>N</Flag>
</Dangerous>
</Address>

我正在使用以下正则表达式模式,但它没有替换

xmlRequest.replaceAll("<Address>.*?</Address>$","");

我可以在Notepad ++中通过选择查找/替换对话框中[x].matches newline单选按钮旁边的Regular Expression复选框来执行此操作

任何人都可以说我的正则表达式有什么问题

4 个答案:

答案 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