問題描述解析文件(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] *>'上的匹配器應該很好。 –