问题描述解析文件(Java)
我该如何解析此格式的文件并分别获取每个节点?
<12-08-1992>
<Name1><Info1><More1><><Moreagain1>
<Name2><Info2><><Morer2><Moreagain2>
....
我想打印的除了这并不似乎是有效的XML(因为<>
部分)日期
问题描述解析文件(Java)
我该如何解析此格式的文件并分别获取每个节点?
<12-08-1992>
<Name1><Info1><More1><><Moreagain1>
<Name2><Info2><><Morer2><Moreagain2>
....
我想打印的除了这并不似乎是有效的XML(因为<>
部分)日期
提供的所有信息。您可能需要手动解析它。
这里是一个匹配进去<>
括号内的所有元素。
public static final String EXAMPLE_TEST = "<12-08-1992>\n" +
"<Name1><Info1><More1><><Moreagain1>\n" +
"<Name2><Info2><><Morer2><Moreagain2>";
public static void main(String[] args) {
Pattern pattern = Pattern.compile("<[a-zA-Z0-9-]*>");
Matcher matcher = pattern.matcher(EXAMPLE_TEST);
while (matcher.find()) {
System.out.println(matcher.group());
/* optionnaly : remove <> characters and filter date
String output = matcher.group().replaceAll("[<>]","");
if(!output.isEmpty()) {
//And don't display dates
try {
new SimpleDateFormat("dd-MM-yyyy").parse(output);
} catch (ParseException e) {
//Display only if the result is not a date.
System.out.println(output);
}
}
*/
}
}
输出:
<12-08-1992>
<Name1>
<Info1>
<More1>
<>
<Moreagain1>
<Name2>
<Info2>
<>
<Morer2>
<Moreagain2>
然后,您可以过滤元素,你不想和删除<>
字符。
这太好了,你会如何删除括号? –
@AllanMacmillan用'replaceAll(“[<>]”,“”);'。我还添加了一些可选的代码。 –
看起来不像XML。可能需要编写一个自定义分析器。 – Henrik
这似乎不是有效的xml(因为'<>'部分)。您可能需要手动解析它。 –
注意:'<[a-zA-Z0-9] *>'上的匹配器应该很好。 –