Как оценить объединенную строку как индексированное выражение XPath в VB6 - PullRequest
2 голосов
/ 27 октября 2019

Я построил выражение Xpath путем объединения строк в VB6:

    strXPath = "xDOC.selectNodes(" & """/GroupType1""" & ").item(" & CStr(i) & ").selectNodes(" & """/OperationStageCollection/OperationStage""" & ").length"

«i» - это целое число, используемое для индексации в

Я хочу вычислить strXPath, чтобы получить циклсчетчик, например:

    n = CInt(strXPath)

n объявляется как целое число;strXPath объявлен как строка. VB6 выдает ошибку несоответствия типов в приведенном выше оценочном выражении. Должно быть, я упускаю что-то очевидное. Как я могу оценить strXPath?

Я понимаю, что могут быть ошибки в самом выражении XPath, но я бы хотел, чтобы оценка работала для устранения таких возможных ошибок.

Ответы [ 2 ]

1 голос
/ 27 октября 2019

Попробуйте удалить некоторые из двойных кавычек:

iLength = xDOC.selectNodes("/GroupType1").item(i).selectNodes("/OperationStageCollection/OperationStage").length

Это должно вернуть желаемое свойство length в виде целого числа.

Затем вы можете использовать iLength втвоя петля.

0 голосов
/ 28 октября 2019

@ BRW: оба ваших вопроса очень специфичны, то есть как для достижения определенных результатов с помощью XPath. Но у меня есть подозрение, что если вы объясните что (данные) вы пытаетесь получить из XML, комментаторы могут показать вам способы, о которых вы не думали, например, скажем, что вы хотите перебрать все <OperationEvent> s в пределах <OperationEventCollection>, один <OperationEvent> может быть извлечен с помощью //GroupType1/OperationStageCollection/OperationStage/OperationEventCollection/OperationEvent[1-based-index], например, //GroupType1/OperationStageCollection/OperationStage/OperationEventCollection/OperationEvent[1], что приводит к единственному узлу XML:

 <OperationEvent>
      <OperationEventDate1>2018-12-16</OperationEventDate1>
      <OperationEventCode>5</OperationEventCode>
      <OperationEventDate2>2018-05-16</OperationEventDate2>
 </OperationEvent>

Таким образом, вместо нескольких selectNodes методов, один правильный запрос XPath может сразу же привести к желаемому результату.

...