2013-02-20 13 views
11

Ich habe entfernen XML-Datei Code unten-, wie XML-Version String aus String

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

Jetzt xmlString i unten-

gegeben im Format Stich bekommen gegeben mit
<?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> 

ich entfernen möchten <?xml version="1.0" encoding="UTF-8" standalone="no"?> von oben string.So i Code geschrieben haben, als

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

Aber noch xmlString sind gleich. Bitte hilf mir, Versionsinformationen aus XmlString zu entfernen.

+0

eine schmutzige Methode wäre 'xmlString = XmlString.replaceAll (" "," ");' – mybecks

Antwort

24

Ändern Sie Ihren regulären Ausdruck zu

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

Sie müssen nicht '<' or '>' entkommen –

2

Ein anderer Weg, würden wir es, wie dies zu tun:

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

String mit dem ersten Index der ‚>‘ + 1 (1 zum nächsten Zeichen zu erhalten), wird es nicht geben Sie xml version enden? Obwohl es nicht sauber ist, dies zu tun.

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.... 
}