使用talend DI查找并替换XML文件中的字符串

时间:2014-05-01 22:54:18

标签: xml talend

我的XML文件有一个DOCTYPE标记,阻止我使用tFileInputXML。因此,我想在Talend Job中找到并替换下面的字符串?使用Talend 5.4免费版。

**<!DOCTYPE log
[
    <!ENTITY % log SYSTEM "xxxx_1.0.dtd" >
    <!ENTITY % detail SYSTEM "yyyy_log_1.0.dtd" >
    %log;
    %detail;
]>**

如果我使用tFileInputXML读取此文件而不替换我无法解析XML中的内容。我想我应该能够做一个tFileInputRegex并找到并替换然后通过tFileInputXML处理文件?

1 个答案:

答案 0 :(得分:0)

tFileInputRegex组件用于定义文本文档的结构,因此您可以从文档中提取列,这样就无法使用。

我在这里看到了几个选项:

如果标头占用预定义的设定行数,则可以使用tFileInputFullRow组件并将标头设置为标头的行数。然后,您可以将其输出为XML文件,并使用tFileInputXML将其读回。

如果您的标题没有设置行数但可以通过正则表达式模式提取,那么您可以再次将文件输入到tFileInputFullRow并将行分隔符设置为""以读取整个事情在一条线上。从这里你可以使用类似^\\*\\*<!DOCTYPE log.+?]>\\*\\*(.+)$之类的东西来提取tExtractRegexField来提取除标题之外的所有内容。请注意,这实际上并不起作用,因为它需要单线模式才能激活(你会在.赢得匹配的地方有一堆换行符)而且我没有看到在组件中设置正则表达式模式的方法。作为前驱,您可以尝试删除字符串中的所有新行字符。