-2

问题改写

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

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

我想打印除日期之外的所有信息

4

1 回答 1

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>

然后,您可以过滤不需要的元素并删除<>字符。

于 2013-10-14T09:34:08.483 回答