2013-10-14 125 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(「[<>]」,「」);'。我還添加了一些可選的代碼。 –