2011-05-11 7 views
1

xml 태그에서만 uri 접두어 (태그 내)를 제거하려면 정규식이 필요합니다.정규식을 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()); 
    } 

나는 아무 생각 없다 여기

private static String INPUT =

입력 XML 붙여 t 수 위 코드에서와 같이 정확한 아니다. 대신 비누 메시지의 예를들 수 있습니다.

답변

0

을 내가 PERLs 정규식 엔진을 더 사용,하지만이 같은 작동하는 경우,이 그것을 수 :

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

private static String REPLACE = "$1"; 
0

당신은 다음과 같은 정규식 ns1을 일치시킬 수 있습니다 :

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

나는 자바로 작성해야한다. 나는 정규 표현식이 좋지 않다. ... 고마워 ... – samash

+0

잘'ns1 :'과 일치한다 - 그래서 당신은 빈 문자열. – hsz

+0

코드를 게시하십시오 (주석을 편집하는 것이 아니라 질문을 편집하십시오). – hsz

0

이 코드는 개선 될 것입니다.

나는 드를 포함 할 것 봉투) | (? < /) | 바디 나는 soapenv, 몸과 헤더 ...

[A-ZA-Z0-9] + :(! 헤더를 제거하지 말아야 AZ뿐만 아니라 ....

관련 문제