Как заменить тег SOAP XML функцией PATINDEX? - PullRequest
0 голосов
/ 05 мая 2019

Я хотел бы удалить тег пароля из строки XML SOAP в SQL Server 2012, здесь тег содержит динамическое пространство имен (xmlns).Поэтому не удалось заменить или найти правильную точную позицию начального индекса пароля.

Пример тега необходимо заменить

 <wsse:Password Type="..."> ... </wsse:Password>

здесь wsse - это пространство имен XML, которое будет другимв каждом ряду.Примечание: здесь я не могу использовать переменную XML, потому что этот столбец содержит недопустимую строку XML. Любой, пожалуйста, помогите мне найти индекс использования patindex.Я попытался найти по шаблону "% <%: Password%", но индекс его предоставления "<", который доступен в первом символе XML. </p>

DECLARE @SOAPMES varchar(max)
SET @SOAPMES = ''
SET @SOAPMES = @SOAPMES + '<wsse:UsernameToken wsu:Id="Example-1">'
SET @SOAPMES = @SOAPMES + '   <wsse:Username> ... </wsse:Username>'
SET @SOAPMES = @SOAPMES + '   <wsse:Password Type="..."> ... </wsse:Password>'
SET @SOAPMES = @SOAPMES + '   <wsse:Nonce EncodingType="..."> ... </wsse:Nonce>'
SET @SOAPMES = @SOAPMES + '   <wsu:Created> ... </wsu:Created>'
SET @SOAPMES = @SOAPMES + '</wsse:UsernameToken>'

SELECT PATINDEX('%<%:Password%',@SOAPMES)

найти точное положение

...