Оператор XPath не возвращает значение, но истинно или ложно - PullRequest
1 голос
/ 05 мая 2020

После добавления пространств имен с помощью функции:

var select = useNamespaces({ns1: "http://pippo.com/schema"})

Я использую следующий оператор:

var Objects = select("//ns1:References/ns1:Reference[@ReferenceType="+typeofref+"]/text()="+id.toString(), ns);

Я хочу получить все ссылки с ReferenceType = typeofref and text () = id

Результат, который я получаю: True

Кажется, что он что-то нашел, но он просто говорит, что элемент есть, но его нет получить его. Кто-нибудь знает почему?

Вот файл xm:

https://raw.githubusercontent.com/OPCFoundation/UA-Nodeset/master/Robotics/Opc.Ua.Robotics.NodeSet2.xml

1 Ответ

1 голос
/ 05 мая 2020

Ваш XPath заканчивается = + некоторой строкой , поэтому будет возвращаться только true или false.

Изменить

"//ns1:References/ns1:Reference[@ReferenceType="+typeofref+"]/text()="+id.toString()

в

"//ns1:References/ns1:Reference[@ReferenceType="+typeofref+" and .="+id.toString()+"]"

, чтобы выбрать все элементы ns1:References/ns1:Reference со значениями typeofref для атрибута @ReferenceType и строковым значением id.toString().

...