2013-02-20 63 views
11

刪除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(); 

給現在我得到如下─中

<?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> 

我想刪除提供的格式了XmlString刺痛代碼讀取XML文件<?xml version="1.0" encoding="UTF-8" standalone="no"?>從上面string.So我已經寫代碼

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

但仍了XmlString相同。所以請幫我從XmlString中刪除版本信息。

+0

一個髒的方法將是'了XmlString = XmlString.replaceAll( 「<?XML版本=」 1.0" 編碼= 「UTF-8」 獨立=「no」?>「,」「);' – mybecks 2013-02-20 07:12:40

回答

24

正則表達式更改爲

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

你不需要轉義'<' or '>' – 2014-08-28 17:49:29

2

的另一種方式,我們會做這樣的:

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

子帶的第一個索引「>」 + 1(+1才能到下一個字符),它不會給你最終的XML版本?雖然這不是乾淨的做法。

2
if(XmlString .contains("<?xml")){ 
    XmlString = XmlString.substring(XmlString.indexOf("?>")+2); 
} 
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.... 
}