17

我已经使用下面给出的代码阅读了 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 刺痛 -

<?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 中删除版本信息。

4

5 回答 5

37

将您的正则表达式更改为

XmlString=XmlString.replaceAll("\\<\\?xml(.+?)\\?\\>", "").trim();
于 2013-02-20T07:29:44.907 回答
4
if(XmlString .contains("<?xml")){
  XmlString = XmlString.substring(XmlString.indexOf("?>")+2);
}
于 2013-02-20T07:20:45.157 回答
3

另一种方法是我们这样做:

XmlString = XmlString.substring(XmlString.indexOf("<Template>"))

编辑: indexOf() 而不是 firstIndexOf()

于 2013-02-20T07:17:36.023 回答
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....
}
于 2013-02-20T08:46:46.623 回答
1

第一个索引为 '>' + 1 的子字符串(+1 到下一个字符),它不会给你 xml 版本的结尾吗?虽然这样做不是很干净。

于 2013-02-20T07:18:39.803 回答