2017-11-07 1 views
1

Ich habe den Anfragetext aus einer Soaupui Anfrage extrahiert und ich versuche, alles von mit einem neuen Header zu ersetzen. Ich habe mehrere verschiedene Ausdrücke ausprobiert, aber ich habe Probleme mit der Übereinstimmung, weil der Text neue Zeilen enthält.Regex - Ersetzen Sie Text zwischen den Tags durch neue Zeilenzeichen

Unten ist die neueste, die ich versucht habe

strRequest3 = strRequest3.replaceAll("<soapenv:Envelope(.*? 
\\R)<soapenv:Header/>","<soap:Envelope " + strNewHeader + "</soap:Header>"); 
log.info strRequest3 

XML-Beispiel unten, wo ich versuche, eine neue erste Zeile und Kopf Ich versuche

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:urn="urn:dhs-gov-au:ccs:pms:sessionreport"> 
<soapenv:Header/> 
<soapenv:Body> 

Alle Ideen, was Regex einfügen um das oben genannte zu erreichen, wäre sehr geschätzt

Danke

+1

Verarbeiten Sie nicht XML (oder HTML für diese Angelegenheit) mit regulären Ausdrücken. Nur ... nicht. –

+0

Ich habe versucht, XMLParser und XMLSlurper in der ersten Instanz zu verwenden, kam aber nicht sehr weit. Ich könnte den Text aus den Tags extrahieren, aber ich brauche die ganze Menge, Tags, Werte, Namespaces usw., so dass es einfacher schien, es auf diese Weise zu machen. Offen für Verbesserungsvorschläge – user3803807

+0

@ user3803807, was ist Eingabe und erwartete XML? Übrigens, bezieht sich das auf Ihre vorherige [Frage] (https://stackoverflow.com/questions/47091167/extract-soap-header-out-of-request-and-ad-it-to-following-request)) was wurde schon gelöst? – Rao

Antwort

0

Wenn Sie 0 wollenUm neue Zeilen zu finden, müssen Sie s Flag (dotall) für Regex verwenden.

In Java können Sie dieses Flag setzen, indem Sie (?s) vor Regex hinzufügen.

String str = "<soapenv:Envelope>123123\n" + 
      "123123\n" + 
      "1231422343\n<soapenv:Header/>"; 
String replacement = "new"; 

System.out.println(str.replaceAll("(?s)<soapenv:Envelope>(.*)<soapenv:Header/>", 
      "<soapenv:Envelope>" + replacement + "<soapenv:Header/>")); 
+0

Danke, ich habe das versucht und jetzt einen Fehler bekommen "benannte Capturing Group hat 0 Länge Name: Muss ich noch etwas hinzufügen, um die Gruppe anzugeben? – user3803807

Verwandte Themen