2016-04-13 8 views
2

Ist es möglich, doppelte Anführungszeichen" in einer Zeichenfolge über Spring DSL zu ersetzen? Ich habe einen Namensraum im XML, den ich entfernen muss, bevor ich an einen anderen Endpunkt sende.Ist es möglich, doppelte Quittung "Zeichen in einer Zeichenfolge über Spring DSL zu ersetzen?

Um unter Zeichenfolge xml

xsi:schemaLocation="xxxxx" 

Ich habe versucht, mit einfacher Sprache, es lief zu entfernen, aber es hat das Zitat nicht ersetzen

<route> 
<from uri="file:src/xmldata?noop=true"/> 
<convertBodyTo type="java.lang.String"/>         
<setBody> 
<simple> 
{body.replaceAll("xsi:schemaLocation="xxxxx"","")} 
</simple> 
</setBody> . . </route>` 
+0

Logisch denken, müssen Sie einen neuen Wert o Körper vergeben, versuchen Sie '{body = body.replaceAll (" xsi: schemaLocation = "xxxxx \" "," ")}' –

+0

Danke, ich habe große XML innerhalb body und müssen das beibehalten, nur Namespaces müssen entfernt werden, da Informatica (Verbraucher meiner Nachricht) es nicht unterstützt. Aus irgendeinem Grund funktioniert die Escape \ "auch nicht. Ich habe auch versucht " und das hat nicht funktioniert. Aber für ähnliche req konnte ich ersetzen < and > Symbol mit <und> – user3824490

+0

Vielleicht, um ein" you can use ' \ x22' oder '\ u0022' –

Antwort

1

In den meisten Fällen, wenn es ein Problem gibt mit ist Regex passenden doppelten oder einfachen Anführungszeichen, es ist ausreichend, eine hexadezimale Darstellung des Zeichens zu verwenden: \u0022 (oder \x22 je nach Sprache/Motor).

So verwenden

{body.replaceAll("xsi:schemaLocation=\u0022xxxxx\u0022","")} 
            ^^^^^^  ^^^^^^ 

Beachten Sie, dass ein Apostroph mit \u0027 (oder \x27) angepasst werden. Es gibt eine großartige Seite, die ich benutze, um Hex-Codes herauszufinden, hier ist a link to the Unicode code converter.