Java Regex替换命名空间

时间:2014-09-30 15:07:10

标签: java regex replace

Regex的新手。

有谁能告诉我java正则表达式替换代码是什么来替换以下XML

<?xml version="1.0" encoding="iso-8859-1"?><message xmlns="http://www.origoservices.com">   <m_control xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.origoservices.com"><control_timestamp>2014-09-30T14:39:05.6402</control_timestamp>........</message>

并制作

<?xml version="1.0" encoding="iso-8859-1"?><message><control_timestamp>2014-09-30T14:39:05.6402</control_timestamp>........</message>

每次名称空间都可能位于不同的位置

2 个答案:

答案 0 :(得分:0)

你需要在这里使用前瞻。

<message.*?(?=<control_timestamp)

将匹配的字符替换为<message>

DEMO

String src = "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?><message xmlns=\"http://www.origoservices.com\">   <m_control xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns=\"http://www.origoservices.com\"><control_timestamp>2014-09-30T14:39:05.6402</control_timestamp>........</message>";
String out = src.replaceAll("<message.*?(?=<control_timestamp)", "<message>");
System.out.println(out);

<强>输出:

<?xml version="1.0" encoding="iso-8859-1"?><message><control_timestamp>2014-09-30T14:39:05.6402</control_timestamp>........</message>

答案 1 :(得分:0)

您可以将"<message.*<control_timestamp>"替换为"<message><control_timestamp>"。那么你的输出就准备好了。