Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Pentaho Ketter-如何获取XML文件中的所有子节点_Xml_Xpath_Pentaho_Kettle - Fatal编程技术网

Pentaho Ketter-如何获取XML文件中的所有子节点

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

我有一个xml文件,我正试图使用Pentaho Cutter将其插入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>

1.
ac4fc887aeef497198822bd233989505
LAFS.K12.L
语言艺术
48c8286c12424beb950194015407afa5

如果我将循环XPath设置为/AB_SIF/LearningStandardItem,那么我将获得我想要的所有节点,除了我试图获得所有等级。当我将一个字段设置为GradeLevel/@Code时,我只得到第一个GradeLevel节点。我需要把它们都弄到手。我正在尝试将所有等级插入MongoDB中的数组中。有没有办法做到这一点?

它会根据需要返回所有代码

/LearningStandardItem/GradeLevels/GradeLevel/@Code
结果如下


在PDI中尝试以下步骤(步骤:从XML获取数据):

  • 将XPATH设置为
    /LearningStandardItem/gradeLevel/*
  • 在步骤的getFields部分,将XPATH设置为
    @code
    ,并将元素类型设置为
    属性
  • 这将获取GradeLevel节点内的所有属性。我附上了一份报告

    或者,您也可以在PDI中尝试步骤“XML输入流(StAX)”。它使用StAX解析器读取所有xml节点和属性。对于大型xml文件,它变得非常有用


    希望能有所帮助:)

    您使用Pentaho中的哪个屏幕来测试XPath表达式?我知道XPath通常可以工作,但在使用Get-XML from file时,它只返回Pentaho中的第一个节点。我正在尝试获取Pentaho中的所有节点。问题似乎出在Pentaho中:(“循环XPath”将生成流。它实际上是在“字段”选项卡中为XPath表达式设置xml上下文。如果循环XPath引用单个元素“//LearningStandardItem”,那么您将获取流中的单个行,否则如果您引用“//GradeLevel”然后,您将在流中获得13行,并且您可以从“字段”中的每一行提取值tab.这样做会得到所有的等级节点,但我无法得到其他节点的值,如StatementCode、Statement等。我需要能够得到所有节点以及所有等级节点的值,或者想出一种方法分别得到这些节点,然后将它们合并回来。