Мне нужно извлечь имя пользователя, значения элемента Password из заголовка soap в soap конверте с использованием lua.
Пример запроса -
... <soap:Header><wsse:Security xmlns:wsse=“http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd” soapenv:mustUnderstand=“1”> <wsse:UsernameToken><wsse:Username>testuser</wsse:Username> <wsse:Password wsse:Type=“http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText”>testpassword</wsse:Password> </wsse:UsernameToken></wsse:Security></soap:Header> ...
с использованием следующего не дает правильный результат (не может использовать xml парсеры), есть ли лучший способ Pattern это?
local username = string.match(soapload, "^.+Username>(.+)</wsse:Username>.+$") local password = string.match(soapload, "^.+PasswordText\">(.+)</wsse:Password>.+$")
В вашем примере используется код "правильная двойная кавычка" (PasswordText”>) \ u201D, поэтому вы ничего не получили. И им не нужно бежать, это не нужно.
PasswordText”>
local soapload = [[ <soap:Header><wsse:Security xmlns:wsse=“http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd” soapenv:mustUnderstand=“1”> <wsse:UsernameToken><wsse:Username>testuser</wsse:Username> <wsse:Password wsse:Type=“http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText”>testpassword</wsse:Password> </wsse:UsernameToken></wsse:Security></soap:Header> ]] local username = string.match(soapload, "<wsse:Username>(.-)</wsse:Username>") local password = string.match(soapload, "PasswordText”>(.-)</wsse:Password>") print(username) print(password)