读取具有每个字段的前导空格的分层文本文件

时间:2013-06-14 09:42:26

标签: java text space hierarchical

我需要解析一个Hierarchical文本文件,其中包含确定属性深度的前导空格数,并为每个级别返回java对象集。我想过使用扫描仪或单独阅读每一行,但这看起来很麻烦。也许正则表达式会是一个更好的解决方案?我需要阅读的文件如下:

workarea = workarea:
  size = (1583, 805, 0)
  areas = areas:
    place = array: 2 items
      0 = int: 0
      1 = int: 0
    size = (1583, 805, 0)
    areas = array: 2 items
      0 = object:
        type = myType:
          prop1 = prop1
          prop2 = array: 2 items
            0 = object:
              prop1 = prop1
              prop2 = prop2
            1 = object:
              prop1 = prop1
              prop2 = prop2
        position = (5, 5, 0)
        size = (735, 226, 0)
      1 = object:
        type = myType2:
          prop1 = prop1
          prop2 = array: 2 items
            0 = object:
              prop1 = prop1
              prop2 = prop2
            1 = object:
              prop1 = prop1
              prop2 = prop2
          prop3 = prop3
        position = (5, 5, 0)
        size = (735, 226, 0)

正如您所看到的那样,定义了一个“区域”对象,然后用特定类型的“对象”(myType1和myType2)填充5行。每个子对象都有不同的属性,(在示例中myType2有prop3。可能包含其他对象的数组)

将此结构放入一组Java对象的最佳方法是什么:例如

Workarea
public String size = "1583,805"
public List<Areas> = (
        {Area
         public String type = "myType"
         Public String prop1 = prop1
         etc....
         },
         {Area
         public String type = "myType2"
         Public String prop1 = prop1
         etc....
         }
)

1 个答案:

答案 0 :(得分:0)

我最终构建了一个Parser类,其中包含几个getValue和getValues方法(返回的值与传入的Regex和文件内容匹配的值数组)。我使用的正则表达式是

    (?<=STRING_BEFORE_VAULE)(.*)(?=STRING_AFTER_VALUE_UTIL_EOF\\s*)

对于文件的每个部分,我只想调用解析器类。

感谢您的帮助。