Parsing 如何使用Talend解析非常规文件?

Parsing 如何使用Talend解析非常规文件?,parsing,talend,Parsing,Talend,我有这样一个文件形状: 如何使用Talend Open Studio解析这样的文件 以下是我尝试过的: 在tJavaRow中,输入是单行中的整个文件。我将其拆分并手动解析。但我不知道如何为文件中的每个OBJ创建输出行 这是“正确”的做法吗?或者这种类型的文件是否有特定的组件 但我不知道如何为文件中的每个OBJ创建输出行 您可以使用tJavaFlex组件来实现这一点: 通过将原始内容连接到TFlowtoItem,将其放入globalMap 使用步骤1中提供的内容,将拆分和解析逻辑放入tJava

我有这样一个文件形状:

如何使用Talend Open Studio解析这样的文件

以下是我尝试过的:

在tJavaRow中,输入是单行中的整个文件。我将其拆分并手动解析。但我不知道如何为文件中的每个OBJ创建输出行

这是“正确”的做法吗?或者这种类型的文件是否有特定的组件

但我不知道如何为文件中的每个OBJ创建输出行

您可以使用tJavaFlex组件来实现这一点:

  • 通过将原始内容连接到TFlowtoItem,将其放入globalMap
  • 使用步骤1中提供的内容,将拆分和解析逻辑放入tJavaFlex的“开始代码”部分
  • 在tJavaFlex的“开始代码”部分启动一个循环(例如,针对每个对象)
  • 在tJavaFlex中定义输出模式
  • 在tJavaFlex的“主代码”部分,将解析的对象映射到输出行的列
  • 别忘了在tJavaFlex的“结束代码”部分关闭循环
  • 我展示了一个没有解析逻辑的快速示例。但既然你已经记下来了,我想应该足够了:

    开始代码

    String[] lines = ((String)globalMap.get("row1.content")).split("\r\n");
    for(String line : lines) { // starts the "generating" loop
    
        row2.key = line; // uses the "generating" loop
    
    } // closes the "generating" loop
    
    主代码

    String[] lines = ((String)globalMap.get("row1.content")).split("\r\n");
    for(String line : lines) { // starts the "generating" loop
    
        row2.key = line; // uses the "generating" loop
    
    } // closes the "generating" loop
    
    结束代码

    String[] lines = ((String)globalMap.get("row1.content")).split("\r\n");
    for(String line : lines) { // starts the "generating" loop
    
        row2.key = line; // uses the "generating" loop
    
    } // closes the "generating" loop
    

    这可以通过tJavaRow实现。键/值行的数量是否始终相同?评论重要吗?它是说“评论”还是这实际上是一个评论?键/值的数量总是相同的,并且评论是一个实际的评论(通常是一个完整的句子)。理想情况下,我需要更改文件中的一个或两个值,而不涉及文件的其余部分。