【发布时间】:2015-07-13 22:48:40
【问题描述】:
我有一个非常短的 xml 字符串从另一个应用程序传递给我的应用程序,我只对提取“级别”标签之间的内容感兴趣。这两者之间哪个解决方案更好:
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 解析器。
-
这不是一个真正的 xml 文件,没有经过验证,没有 doctype...而且由于我无法控制它,我宁愿将其视为字符串...。Xpath 用于由于这个错误,会导致“prolog 中不允许的内容”和“SAX:解析时可能无法调用解析”错误:bugs.openjdk.java.net/browse/JDK-8047329
标签: regex xml-parsing substring