【问题标题】:Find and replace string from XML file using talend DI使用 talend DI 从 XML 文件中查找和替换字符串
【发布时间】:2014-05-01 22:54:18
【问题描述】:

我的 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 处理文件?

【问题讨论】:

    标签: xml talend


    【解决方案1】:

    tFileInputRegex 组件旨在定义文本文档的结构,以便您可以从文档中提取列,因此此处不会用到。

    我在这里看到了几个可供您选择的选项:

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

    如果您的标题不是固定数量的行但能够通过正则表达式模式提取,那么您可以再次将文件输入到 tFileInputFullRow 并将行分隔符设置为 "" 以读取整个内容作为单行。从这里您可以使用 tExtractRegexFields 使用 ^\\*\\*&lt;!DOCTYPE log.+?]&gt;\\*\\*(.+)$ 之类的东西来提取除标题以外的所有内容。请注意,这实际上并不完全有效,因为它需要单行模式才能处于活动状态(您将有一堆换行符,. 将不匹配)而且我没有看到方法在组件中设置正则表达式模式。作为前兆,您可以尝试删除字符串中的所有换行符。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-16
      • 1970-01-01
      • 2011-05-25
      • 2023-03-23
      • 2021-05-21
      • 1970-01-01
      相关资源
      最近更新 更多