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
Xml XPATH:如何获取第一个元素组的.length和第一个组中第二个元素组的.length?_Xml_Xpath_Xml Parsing_Traversal - Fatal编程技术网

Xml XPATH:如何获取第一个元素组的.length和第一个组中第二个元素组的.length?

Xml XPATH:如何获取第一个元素组的.length和第一个组中第二个元素组的.length?,xml,xpath,xml-parsing,traversal,Xml,Xpath,Xml Parsing,Traversal,我正在处理结构如下所示的xml文件 和需要单独处理 在这两种情况下,我都希望使用XPATH遍历每个中的元素 因此,对于每个,我需要获得中的编号,然后获得当前中的编号 在伪代码中,处理将是: For i = 1 to number of <OperationStageCode> in current <OperationStage> of current <GroupType1> For j = 1 to number of <Op

我正在处理结构如下所示的xml文件

需要单独处理

在这两种情况下,我都希望使用XPATH遍历每个
中的
元素

因此,对于每个
,我需要获得
的编号,然后获得当前
的编号

在伪代码中,处理将是:

    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
当然,这只是得到整个
的总数。我尝试过的其他表达式(下面)都返回零。正如您所看到的,我只是在这里挥舞——暴露了我对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
获取单个
中的
编号,然后获取当前
中的
编号的正确语法是什么

我看了很多XPATH文档,但没有找到任何关于我的情况的有用示例。如果你知道的话,也请告诉我这些文件

以下是xml结构:


1.
3.
2018-12-16
5.
2018-05-16
... 更多操作事件。。。
... 更多操作阶段。。。
…更多组类型1。。。
3.
101
6.
2012-01-03
... 更多操作事件。。。
... 更多操作阶段。。。
…更多组类型2。。。

我相信严格地说,是xpath表达式

//GroupType1/OperationStageCollection/count(OperationStage)
应获取单个
中的
数量,以及

//GroupType1/OperationStageCollection/OperationStage//OperationEventCollection/count(OperationEvent)

我相信,严格按照xpath表达式,应该可以得到当前

的数量

//GroupType1/OperationStageCollection/count(OperationStage)
应获取单个
中的
数量,以及

//GroupType1/OperationStageCollection/OperationStage//OperationEventCollection/count(OperationEvent)

杰克:谢谢你,我应该告诉你当前
中的
的编号。第一部分有效,但第二部分给出了整个
的数量;不仅仅是当前
中的
数量。我会继续摆弄它,看看我是否能让它工作,但如果你能在这期间提出一个调整建议,我将不胜感激。我仍然没有完全掌握语法。我认为“//”捕获了整个XML文档中的每一个指定元素,但我认为这是错误的,因为您在元素字符串的中间使用“//”。我在不同的在线xpath测试仪中再次尝试了它,输出总是当前
中的数字。Jack:一个小麻烦是我必须用VB6编写实现,它似乎不支持count()方法。因此,我将.length替换为:xDOC.selectNode(//GroupType1/OperationStageCollection/OperationStage//OperationEventCollection/OperationEvent”)。length@BRW-只要你到了你想去的地方,一切都很好!杰克:谢谢。第一部分有效,但第二部分给出了整个
的数量;不仅仅是当前
中的
数量。我会继续摆弄它,看看我是否能让它工作,但如果你能在这期间提出一个调整建议,我将不胜感激。我仍然没有完全掌握语法。我认为“//”捕获了整个XML文档中的每一个指定元素,但我认为这是错误的,因为您在元素字符串的中间使用“//”。我在不同的在线xpath测试仪中再次尝试了它,输出总是当前
中的数字。Jack:一个小麻烦是我必须用VB6编写实现,它似乎不支持count()方法。因此,我将.length替换为:xDOC.selectNode(//GroupType1/OperationStageCollection/OperationStage//OperationEventCollection/OperationEvent”)。length@BRW-只要你到了你想去的地方,一切都很好!