2013-10-14 2 views
-2

ВОПРОС ПерефразированоРазбор файлов (Java)

Как я разобрать файл в этом формате и получить каждый узел по отдельности?

<12-08-1992> 
<Name1><Info1><More1><><Moreagain1> 
<Name2><Info2><><Morer2><Moreagain2> 
.... 

Я хочу напечатать всю информацию, которая дается за исключением даты

+3

Не похож на XML. Может потребоваться написать собственный парсер. – Henrik

+3

Это не похоже на действительный xml (из-за '<>' частей). Вам, вероятно, придется вручную разобрать его. –

+1

Примечание: Матчи на '<[a-zA-Z0-9] *>' должны делать все хорошо. –

ответ

2

Это не кажется действительным 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> 

Вы можете фильтровать элементы, которые вы не хотите, и удалить <> символы.

+0

Thats great, как бы вы удалили скобки? –

+1

@AllanMacmillan С 'replaceAll (" [<>] "," ");'. Я также добавил немного дополнительного кода. –

Смежные вопросы