2015-07-16 5 views
-3

Рассмотрим следующий кодJava string.replaceAll вопрос

String unformattedXml ="<root> <?xml version=\"1.0\" encoding=\"UTF-8\"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV=";   

unformattedXml = unformattedXml.replaceAll("<?xml version=\"1.0\" encoding=\"UTF-8\"?>",""); 

System.out.println(unformattedXml); 

Выход:

<root> <?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV= 

Как вы, наверное, уже поняли, я хочу, чтобы удалить XML-тег из строки, но почему-то " replaceAll 'не помогает мне.

Любые предложения?

Спасибо!

+2

Попробуйте убежать ваше? 'S. – iobender

+4

Прежде чем спросить, почему функция не делает то, что вы хотите, пожалуйста, прочитайте документацию, чтобы узнать, что она на самом деле должна делать. – njzk2

+0

@ njzk2: избавьте себя от необходимости советовать людям читать документацию, просто downvote («не показывает никаких исследований») и двигаться дальше. очевидно, OP не волнует, он просто задал вопрос о том, что он мог ответить сам, читая api doc. –

ответ

6

replace вместо replaceAll. Последний анализирует входную строку как регулярное выражение вызывают символы, такие как ? следует рассматривать как регулярные выражения метасимволов:

unformattedXml = unformattedXml.replace(
      "<?xml version=\"1.0\" encoding=\"UTF-8\"?>", ""); 
+0

Спасибо, что работает. Но у меня в моем файле больше одного xml-тега, и я хочу избавиться от всех из них. Это поможет? –

+1

@FaizAli Да 'replace' заменяет все вхождения (хотя это называется просто' replace'). – manouti

+2

@FaizAli, чувак, серьезно, прочитал документ ... – njzk2

0

Вы можете использовать вместо() вместо replaceAll()

String unformattedXml ="<root> <?xml version=\"1.0\" encoding=\"UTF-8\"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="; 
unformattedXml = unformattedXml.replace("<?xml version=\"1.0\" encoding=\"UTF-8\"?>",""); 
System.out.println(unformattedXml); 


Смежные вопросы