我有一个xml文件,我试图使用Pentaho Kettle插入MongoDB。这是我正在处理的示例节点。
<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>
如果我将我的Loop XPath设置为/ AB_SIF / LearningStandardItem,那么我将获得我想要的所有节点,除了我正在尝试获得所有年级。当我将字段设置为GradeLevel / @ Code时,我只获得第一个GradeLevel节点。我需要把它们全部搞定。我试图将所有成绩级别插入MongoDB中的数组中。有没有办法做到这一点?
答案 0 :(得分:0)
答案 1 :(得分:0)
在PDI 中尝试以下步骤(步骤:从XML获取数据):
/LearningStandardItem/GradeLevels//*
@Code
,将Element type设置为Attribute
。这将获取GradeLevel节点内的所有属性。我附上了gist here。
或者,您也可以尝试在PDI中使用步骤“XML输入流(StAX)”。它使用StAX解析器来读取所有xml节点和属性。它在大型xml文件的情况下很有用。
希望有所帮助:)