Подтвердить что ты не робот

Как удалить строку версии Xml из String

Я прочитал Xml файл, используя приведенный ниже код -

  String XmlString = "";
  String resourcePath=FilePathHelper.getResourceFilePath(request);



        BufferedReader br = new BufferedReader(new FileReader(new  File(resourcePath+ "SubIndicatorTemplate.xml")));
        String line;
        StringBuilder sb = new StringBuilder();

        while((line=br.readLine())!= null){
            sb.append(line.trim());
        }

        XmlString=sb.toString();

Теперь я получаю XmlString sting в формате, указанном ниже -

<?xml version="1.0" encoding="UTF-8" standalone="no"?><Template><Caption Name="Book Details"/><Data Type="one"/><Titles><Title Name="Book no" Type="Numeric"/><Title Name="Book name" Type="Text"/></Titles></Template>

Я хочу удалить <?xml version="1.0" encoding="UTF-8" standalone="no"?> из строки выше. Так что я написал код как

XmlString=XmlString.replaceAll("<?xml*?>", "").trim();

Но все же XmlString одинаковы. Поэтому, пожалуйста, помогите мне удалить информацию о версии из XmlString.

4b9b3361

Ответ 1

Измените свое регулярное выражение на

XmlString=XmlString.replaceAll("\\<\\?xml(.+?)\\?\\>", "").trim();

Ответ 2

Другой способ: сделать это следующим образом:

XmlString = XmlString.substring(XmlString.firstIndexOf("<Template>"))

Ответ 3

if(XmlString .contains("<?xml")){
  XmlString = XmlString.substring(XmlString.indexOf("?>")+2);
}

Ответ 4

String xmlString = readXml();
int p1 = xmlString.indexOf("<?xml ");
int p2 = xmlString.indexOf("?>");
if ( p1 != -1 && p2 != -1 && p2>p1){
   xmlString=xmlString.substring(0,p1)+xmlString(p2+2);
}

private String readXml(){
   //TOTO from file or any-pipeline read,convert to String....
}

Ответ 5

подстрока с первым индексом ' > ' + 1 (+1, чтобы перейти к следующему char), не даст ли вам конец xml-версии? Хотя это не чистый способ сделать это.