Pentaho Ketter-如何获取XML文件中的所有子节点
我有一个xml文件,我正试图使用Pentaho Cutter将其插入MongoDB。这是我正在处理的一个示例节点Pentaho Ketter-如何获取XML文件中的所有子节点,xml,xpath,pentaho,kettle,Xml,Xpath,Pentaho,Kettle,我有一个xml文件,我正试图使用Pentaho Cutter将其插入MongoDB。这是我正在处理的一个示例节点 <LearningStandardItem RefId="ac4fc887aeef497198822bd233989505" xml:lang="en"> <StandardHierarchyLevel HierarchyLevelDescription="Level 1">1</StandardHierarchyLevel> <Pa
<LearningStandardItem RefId="ac4fc887aeef497198822bd233989505" xml:lang="en">
<StandardHierarchyLevel HierarchyLevelDescription="Level 1">1</StandardHierarchyLevel>
<ParentItemRefId>ac4fc887aeef497198822bd233989505</ParentItemRefId>
<StatementCode>LAFS.K12.L</StatementCode>
<Statement><![CDATA[Language]]></Statement>
<GradeLevels>
<GradeLevel Code="KG"/>
<GradeLevel Code="01"/>
<GradeLevel Code="02"/>
<GradeLevel Code="03"/>
<GradeLevel Code="04"/>
<GradeLevel Code="05"/>
<GradeLevel Code="06"/>
<GradeLevel Code="07"/>
<GradeLevel Code="08"/>
<GradeLevel Code="09"/>
<GradeLevel Code="10"/>
<GradeLevel Code="11"/>
<GradeLevel Code="12"/>
</GradeLevels>
<SubjectArea Code="10">Language Arts</SubjectArea>
<LearningStandardDocumentRefId>48c8286c12424beb950194015407afa5</LearningStandardDocumentRefId>
<SIF_ExtendedElements>
<SIF_ExtendedElement Name="CCRefId"><![CDATA[CED36FDE-67AD-11DF-AB5F-995D9DFF4B22]]></SIF_ExtendedElement>
</SIF_ExtendedElements>
</LearningStandardItem>
1.
ac4fc887aeef497198822bd233989505
LAFS.K12.L
语言艺术
48c8286c12424beb950194015407afa5
如果我将循环XPath设置为/AB_SIF/LearningStandardItem,那么我将获得我想要的所有节点,除了我试图获得所有等级。当我将一个字段设置为GradeLevel/@Code时,我只得到第一个GradeLevel节点。我需要把它们都弄到手。我正在尝试将所有等级插入MongoDB中的数组中。有没有办法做到这一点?它会根据需要返回所有代码
/LearningStandardItem/GradeLevels/GradeLevel/@Code
结果如下
在PDI中尝试以下步骤(步骤:从XML获取数据):
/LearningStandardItem/gradeLevel/*
@code
,并将元素类型设置为属性
希望能有所帮助:)您使用Pentaho中的哪个屏幕来测试XPath表达式?我知道XPath通常可以工作,但在使用Get-XML from file时,它只返回Pentaho中的第一个节点。我正在尝试获取Pentaho中的所有节点。问题似乎出在Pentaho中:(“循环XPath”将生成流。它实际上是在“字段”选项卡中为XPath表达式设置xml上下文。如果循环XPath引用单个元素“//LearningStandardItem”,那么您将获取流中的单个行,否则如果您引用“//GradeLevel”然后,您将在流中获得13行,并且您可以从“字段”中的每一行提取值tab.这样做会得到所有的等级节点,但我无法得到其他节点的值,如StatementCode、Statement等。我需要能够得到所有节点以及所有等级节点的值,或者想出一种方法分别得到这些节点,然后将它们合并回来。