【问题标题】:Regex to remove the uri prefix (within tag) only from xml tag正则表达式仅从 xml 标记中删除 uri 前缀(在标记内)
【发布时间】:2011-05-11 10:39:20
【问题描述】:

我需要一个正则表达式来仅从 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 =

不是正确的,如上面的代码所示。相反,您可以采取任何肥皂消息的示例。

【问题讨论】:

    标签: java regex


    【解决方案1】:

    我更喜欢使用 PERLs RegEx 引擎,但如果它的工作原理相同,可能就是这样:

    private static String REGEX1 = "(<\\/?)[a-z0-9]+:";
    

    private static String REPLACE = "$1";
    

    【讨论】:

      【解决方案2】:

      您可以将ns1 与以下正则表达式匹配:

      <\/?([a-z0-9]+?:).*?>
      

      【讨论】:

      • 它很好地匹配ns1: - 所以你只需要将它替换为一个空字符串。
      • 发布您已经这样做的代码(编辑您的问题 - 不在评论中)。
      【解决方案3】:

      我会改进这段代码。我不应该删除soapenv、body 和header...

      (?)[a-zA-Z0-9]+:(?!Header|Body|Envelope)

      我也会包括 de A-Z....

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-02-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-12
        • 1970-01-01
        相关资源
        最近更新 更多