我不禁注意到我在解析 Android 中定义明确的 XML 文件时使用了很多字符串比较(带有XmlPullParser
.
到目前为止,它通常看起来像这样(有点简化):
...
tag = parser.getName().toLowerCase();
if ("tag1".equals(tag)) {
// Do something with the state machine
}
else if ("tag2".equals(tag)) {
// Do something else with the state machine
}
...
else if ("tag23".equals(tag)) {
// Do something more with the state machine
}
相反,我想要的是这样的(StringMatcher 对我来说是假设的快乐制造者):
private static final StringMatcher tagMatcher = new StringMatcher(StringMatcher.NO_MATCH);
static {
tagMatcher.addString("tag1", 1);
tagMatcher.addString("tag2", 2);
....
tagMatcher.addString("tag23", 23);
}
...
tag = parser.getName().toLowerCase();
switch (tagMatcher.match(tag)) {
case 1:
// Do something with the state machine
break;
case 2:
// Do something else with the state machine
break;
...
case 23:
// Do something more with the state machine
break;
default:
Log.e("PARSER", "Unexpected tag: " + tag);
break;
}
如您所见,我希望将一种UriMatcher
模式应用于我的 XML 文件标签。你们中有人知道我可以在 Android 中使用这样的类吗?任何其他对字符串的快速过滤也可以(不过,如果可以重用 UriMatcher 模式,它会很整洁)。
到目前为止,我一直在研究正则表达式,但我不确定我是否能满足我的需要(我想要一个 switch - case 样式测试),当然还有上面示例中所示的常规字符串比较。
干杯,--dbm