Ответ 1
Измените свое регулярное выражение на
XmlString=XmlString.replaceAll("\\<\\?xml(.+?)\\?\\>", "").trim();
Я прочитал 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.
Измените свое регулярное выражение на
XmlString=XmlString.replaceAll("\\<\\?xml(.+?)\\?\\>", "").trim();
Другой способ: сделать это следующим образом:
XmlString = XmlString.substring(XmlString.firstIndexOf("<Template>"))
if(XmlString .contains("<?xml")){
XmlString = XmlString.substring(XmlString.indexOf("?>")+2);
}
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....
}
подстрока с первым индексом ' > ' + 1 (+1, чтобы перейти к следующему char), не даст ли вам конец xml-версии? Хотя это не чистый способ сделать это.