Java XPath интерпретирует '-' как минус с GUID - PullRequest
1 голос
/ 29 ноября 2011

Я пишу выражение XPath на Java и пытаюсь получить все элементы с определенным GUID.В основном я делаю:

(NodeList) xpath.evaluate("//object[guid=" + guid + "]", objectDoc, XPathConstants.NODESET);

с GUID:

eb52a56c-2a16-4256-ab0c-523cb6d19a3f

XPath выдает мне ошибку:

eb52a56c-2a16-4256-ab0c-523cb6d19a3f could not be formatted to a number!

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

Спасибо, Коди

Ответы [ 2 ]

2 голосов
/ 29 ноября 2011

Как говорит EJP, он должен быть в кавычках.

Однако построение выражений XPath таким способом путем конкатенации строк является неправильным подходом.Используйте выражение типа

xpath.evaluate("//object[guid=$guid]")

и свяжите переменную $ guid с помощью XPath API (путем создания VariableResolver).

Есть много преимуществ: оптимизация, ясность кода, предотвращение атак с использованием инъекцийизбегая необъяснимого поведения, которое можно диагностировать, только задавая вопросы по StackOverflow и т. д.

2 голосов
/ 29 ноября 2011

Цитировать это."// object [guid = '" + guid + "']"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...