如何从String中删除Xml版本字符串

时间:2013-02-20 07:09:23

标签: java

我使用下面给出的代码阅读了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中删除版本信息。

5 个答案:

答案 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版本的结束?虽然这不是干净的方式。