我需要一个正则表达式来仅从xml标记中删除uri前缀(在标记内)。
示例
输入:
<ns1:fso xlmns:="http://xyz"><sender>abc</sender></ns1:fso>
输出:
<fso xlmns:="http://xyz"><sender>abc</sender></fso>
这是我的代码:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public final class RegularExpressionTest {
private static String REGEX1 = "<\\/?([a-z0-9]+?:).*?>";
private static String INPUT = "<ns1:fso xmlns:ns1='https://www.example.com/fsoCanonical'>
<ns2:senderId xmlns='http://www.example.com/fsoCanonical'>abc</ns2:senderId>
<receiverId xmlns='http://www.example.com/fsoCanonical'>testdata</receiverId>
<messageId xmlns='http://www.example.com/fsoCanonical'>4CF4DC05126A0077E10080000A66C871</messageId>
</ns1:fso> ";
private static String REPLACE = "";
public static void main(String[] args) {
Pattern p = Pattern.compile(REGEX1);
Matcher m = p.matcher(INPUT); // get a matcher object
StringBuffer sb = new StringBuffer();
while (m.find()) {
m.appendReplacement(sb, REPLACE);
}
m.appendTail(sb);
System.out.println(sb.toString());
}
我无法在此处粘贴输入XML
private static String INPUT =
不正确,如上面的代码所示。相反,你可以采取肥皂信息的任何例子。
答案 0 :(得分:0)
您可以将ns1
与以下正则表达式匹配:
<\/?([a-z0-9]+?:).*?>
答案 1 :(得分:0)
我更多地使用PERLs RegEx引擎,但如果它的工作方式相同,可能就是这样:
private static String REGEX1 = "(<\\/?)[a-z0-9]+:";
和
private static String REPLACE = "$1";
答案 2 :(得分:0)
我会改进这段代码。我不应该删除soapenv,body和header ...
(小于?/)[A-ZA-Z0-9] + :(?部首|身体|信封)
我也会包括de A-Z ......