2013-10-14 124 views
-2

问题描述解析文件(Java)

我该如何解析此格式的文件并分别获取每个节点?

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

我想打印的除了这并不似乎是有效的XML(因为<>部分)日期

+3

看起来不像XML。可能需要编写一个自定义分析器。 – Henrik

+3

这似乎不是有效的xml(因为'<>'部分)。您可能需要手动解析它。 –

+1

注意:'<[a-zA-Z0-9] *>'上的匹配器应该很好。 –

回答

2

提供的所有信息。您可能需要手动解析它。

这里是一个匹配进去<>括号内的所有元素。

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

这太好了,你会如何删除括号? –

+1

@AllanMacmillan用'replaceAll(“[<>]”,“”);'。我还添加了一些可选的代码。 –