Я работаю с XML-файлами, структура которых указана ниже.
<GroupType1>
и <GroupType2>
необходимо обрабатывать отдельно.
В любом случае я хочу выполнить циклчерез <OperationEvent>
элементов в каждом <OperationStage>
с использованием XPATH.
Итак, для каждого <GroupType1>
мне нужно получить число <OperationStage>
в <OperationStageCollection>
, а затем получить число <OperationEvent>
в <OperationEventCollection>
текущего <OperationStage>
.
В псевдокоде обработка будет выглядеть так:
For i = 1 to number of <OperationStageCode> in current <OperationStage> of current <GroupType1>
For j = 1 to number of <OperationEvent> in ith <OperationStage> in the current <GroupType1>
process jth <OperationEvent> of ith <OperationStage>
Next J
Next i
И тогда я сделаю то же самое для <GroupType2>
Я застрял, пытаясь получить число <OperationStage>
в <OperationStageCollection>
и число <OperationEvent>
в <OperationEventCollection>
текущего <OperationStage>
.
У меня естьпробовал различные выражения, такие как:
i = xDOC.selectNodes("//OperationStage").length
Но, конечно, это всего лишь общее количество <OperationStage>
во всем <GroupCollection>
. Другие выражения, которые я пробовал (ниже), все возвращают ноль. Как вы можете видеть, я просто колеблюсь здесь - обнажая свое незнание синтаксиса обхода XPATH.
i = xDOC.selectNodes("/OperationStage").length
i = xDOC.selectNodes("OperationStageCollection//catmk:ProceedingStage").length
i = xDOC.selectNodes("OperationStageCollection/catmk:ProceedingStage").length
i = xDOC.selectNodes("/OperationStageCollection/catmk:ProceedingStage").length
Какой правильный синтаксис для получения числа <OperationStage>
в <OperationStageCollection>
один <GroupType1>
, затем получите число <OperationEvent>
в <OperationEventCollection>
текущего <OperationStage>
?
Я просмотрел много документации XPATH, но ничего не нашелс полезными примерами в приблизительной ситуации. Пожалуйста, укажите мне такую документацию, если вам это известно.
Вот структура xml:
<GroupCollection>
<Groups>
<GroupType1>
<GroupType1_Identifier>1</GroupType1_Identifier>
<OperationStageCollection>
<OperationStage>
<OperationStageCode>3</OperationStageCode>
<OperationEventCollection>
<OperationEvent>
<OperationEventDate1>2018-12-16</OperationEventDate1>
<OperationEventCode>5</OperationEventCode>
<OperationEventDate2>2018-05-16</OperationEventDate2>
</OperationEvent>
... more OperationEvents ...
</OperationEventCollection>
</OperationStage>
... more OperationStages ...
</OperationStageCollection>
</GroupType1>
...moreGroupType1...
<GroupType2>
<GroupType2_Identifier>3</GroupType2_Identifier>
<OperationStageCollection>
<OperationStage>
<OperationStageCode>101</OperationStageCode>
<OperationEventCollection>
<OperationEvent>
<OperationEventCode>6</OperationEventCode>
<OperationEventDate2>2012-01-03</OperationEventDate2>
</OperationEvent>
... more OperationEvents ...
</OperationEventCollection>
</OperationStage>
... more OperationStages ...
</OperationStageCollection>
</GroupType2>
...moreGroupType2...
</Groups>
</GroupCollection>