我使用下面给出的代码阅读了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中删除版本信息。
答案 0 :(得分:29)
将正则表达式更改为
XmlString=XmlString.replaceAll("\\<\\?xml(.+?)\\?\\>", "").trim();
答案 1 :(得分:3)
if(XmlString .contains("<?xml")){
XmlString = XmlString.substring(XmlString.indexOf("?>")+2);
}
答案 2 :(得分:2)
另一种方式我们可以这样做:
XmlString = XmlString.substring(XmlString.indexOf("<Template>"))
编辑:indexOf()而不是firstIndexOf()
答案 3 :(得分: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....
}
答案 4 :(得分:1)
第一个索引为'&gt;'的子字符串+ 1(+1来到下一个字符),它不会给你xml版本的结束?虽然这不是干净的方式。