Regex для удаления префикса uri (внутри тега) только из тега xml - PullRequest
1 голос
/ 11 мая 2011

Мне нужно регулярное выражение, чтобы удалить префикс uri (внутри тега) только из тега xml.

* ** 1003 тысяча два * Пример

ввод:

<ns1:fso xlmns:="http://xyz"><sender>abc</sender></ns1:fso>

выход: * +1010 *

<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 =

не является правильным, как показано в приведенном выше коде. Вместо этого вы можете взять любой пример мыльного сообщения.

Ответы [ 3 ]

0 голосов
/ 12 мая 2011

Я больше использую движок PERLs RegEx, но если он работает так же, это может быть:

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

и

private static String REPLACE = "$1";
0 голосов
/ 26 апреля 2016

Я бы улучшил этот код. Я не должен удалять soapenv, тело и заголовок ...

[A-Za-Z0-9] + :( ?! Header (</?) | Тело | Конверт) </p>

Я бы тоже включил де А-Я ....

0 голосов
/ 11 мая 2011

Вы можете сопоставить ns1 со следующим регулярным выражением:

<\/?([a-z0-9]+?:).*?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...