【问题标题】:Set content of row xml element / add attributes to sub-elements in Kettle XML output?在 Kettle XML 输出中设置行 xml 元素的内容/向子元素添加属性?
【发布时间】:2021-06-05 03:08:10
【问题描述】:

我的父 XML 元素称为Rows(XML 根节点),行 XML 元素称为Row

我可以将字段作为Row 的属性输出,或者将其内容设置为源字段值的子元素。

<Rows>
  <Row attr1="..." attr2="...">
    <Elem1>...</Elem1>
    <Elem2>...</Elem2>
  </Row>
</Rows>

但是有没有办法设置Row 的内容?或者向子元素添加属性? .. 或空白元素名称不起作用。

<Rows>
  <Row attr1="..." attr2="...">
    ...
  </Row>
</Rows>

或者

<Rows>
  <Row>
    <Elem1 attr1="..." attr2="..."></Elem1>
  </Row>
</Rows>

【问题讨论】:

  • 需要结构的例子,你需要什么。如果你只对可能性感兴趣,那么从你所说的我说“这是可能的”。您必须使用“XML Join”和“Add XML”步骤。我设法创建了非常复杂的结构和多级 xml 文档。在kettle 发行版中有一个名为“创建多级XML 文件”的示例——它位于$KETTLE_HOME/sample 目录中

标签: xml output pentaho kettle


【解决方案1】:

正如@simar 评论的那样,你的问题有点含糊,但我想我可以给你一些启发。正如他所提到的,这是可能的 - 这是一个正在创建的多级复杂 XML 的示例: 我将专注于第一个子转换“标题”,因为它已经有多个元素和属性: 我会在这里挤一些,除非我会用太多的图像填充它。首先,具有一些属性的数据网格、“添加 XML”步骤配置和预览(抱歉模糊): 正如您在彩色框中看到的那样,字段被输入到 Add XML 步骤,您可以在此处配置它们是属性还是元素。

  • 从图片2 的第一个数据网格中添加了蓝色字段,并且 在添加 XML 步骤中用作元素的属性 “documentoDLO”。
  • 在该“占位符”上添加了红色字段添加 常量步骤,映射为“非属性”(因此,元素) 添加 XML 步骤,并显示为嵌套在“documentoDLO”上的元素...

只是不要问我为什么这些元素不关闭自己(而不是 ),我很遗憾不知道如何解释。但是不用担心,只要我们加入 XML,它就会得到修复。所以,进入下一步:加入!我需要两个屏幕: 好的,在预览面板上查看“添加 XML 2”如何将两个字段变成 2 个属性。现在,转到“XML 加入”: 在这里,您可以看到“添加 XML”是如何成为目标步骤的 - 或者,将信息加入 INTO 的步骤。源步骤是添加 XML 2,我们要在 XML 流上加入的信息当前所在的位置。 path 语句定义了 XML 源字段将在目标 XML 上插入的位置 - 因为我们定义了“//limitesInformados”,所以“Add XML 2”中的这两行变成了

的两个子元素

可以在here找到此过程创建的文件示例。

【讨论】:

  • 感谢您的详细回答,需要一些时间才能解决。在第一印象中,XML 转换似乎是在 Soup 中以多个看起来很复杂的步骤定义的。我想知道使用单个 XSLT 步骤重新构建 XML 是否会更容易——我精通 XSLT 并且结构更改我想要一个微不足道的(没有分组等)。
  • 现在你明白了,我唯一一次使用 XSLT 步骤是在 Pentaho 论坛的人的帮助下,使我的 XML 更容易被人类阅读。再次阅读这个问题,我认为我几乎在 Kettle 上制作了一个关于 XML 的教程——从我现在看到的情况来看,你需要混合和匹配阅读已经存在的 XML 并进行一些更改,向元素添加属性,对吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-14
  • 1970-01-01
相关资源
最近更新 更多