Как использовать функцию XPath в экземпляре XPathExpression программно?

В вашем коде много ошибок, также ключевое слово unsafe здесь бесполезно

Я думаю, что вы можете искать это

// get the size
int size = Marshal.SizeOf(tempData);

// Create some unmanaged memory 
IntPtr ptr = Marshal.AllocHGlobal(size);

// marshal the structure to pointer
Marshal.StructureToPtr(tempData, ptr, false);

// call the funky api
sendMessageToHSM((int)HSM_COMMANDS.HSM_GUI_PC_UPDATE_STEP_CALIB, ptr);

// get the result if there is any
_TempData tempData2 = (_TempData)Marshal.PtrToStructure(ptr, typeof(_TempData));

// clean up the memory
Marshal.FreeHGlobal(ptr);

Также в C # мы не делаем имя типа с подчеркиванием

10
задан OMG Ponies 26 September 2009 в 16:44
поделиться

1 ответ

Функция ends-with() не определяется для XPath 1.0, но только для XPath 2.0 и XQuery.

Вы используете.NET..NET в эту дату не реализует XPath 2.0, XSLT 2.0 или XQuery.

Можно легко создать выражение XPath 1.0, оценка которого приводит к тому же результату как функция ends-with():

$str2 = substring($str1, string-length($str1)- string-length($str2) +1)

приводит к тому же булеву результату (true() или false()) как:

ends-with($str1, $str2)

В Вашем конкретном случае просто необходимо заменить правильными выражениями $str1 и $str2. Они, соответственно, /myXml/data и 'World'.

Так, выражение XPath 1.0 для использования, который эквивалентен выражению XPath 2.0 ends-with(/myXml/data, 'World') :

'World' = 
   substring(/myXml/data,
             string-length(/myXml/data) - string-length('World') +1
             )
34
ответ дан 3 December 2019 в 14:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: