我有一个非常短的XML字符串从另一个应用程序传递给我的应用程序,我只对提取“level”标签之间的内容感兴趣。其解决方案是在这两者之间更好:正则表达式vs子串
String xmlString =
"<type>
<perm>
<date>99999999</date>
<level>admin</level>
</perm>
</type>";
String level = xmlString.substring(xmlString.indexOf("<level>") + "<level>".length(),
xmlString.indexOf("</level>"));
或
Pattern p1 = Pattern.compile("<level>(\\S+)</level>");
Matcher m = p1.matcher(xmlString);
if (m.find()) {
String level = m.group(1);
}
最好的解决方案是第三个:使用XML解析器。 – Biffen
这不是一个真正的xml文件,没有验证,没有文档类型...因为我没有控制它,我宁愿把它当作一个字符串.... Xpath被用在过去,并会导致“内容不是允许在序言“和”SAX:解析可能不会被称为解析“错误,由于此错误:https://bugs.openjdk.java.net/browse/JDK-8047329 – bez