Xpath конвертирует Char (13) неправильно - PullRequest
1 голос
/ 29 октября 2019

Похоже, мой запрос конвертирует char(13) неправильно? Если это не так, может кто-нибудь объяснить это?

Запрос:

;with CTE1 as 
    (
        select 
            Product
            , (select t.* for xml raw('row'), type) as Data
        from 
            [PIM].[dbo].[MasterFeatures] as t
    )
, CTE2 as 
    (
        select
             Product,
             F.C.value('local-name(.)', 'nvarchar(128)') as Field,
             F.C.value('.', 'nvarchar(max)') as Data
             , GETDATE() AS createdDate
        from 
            CTE1 as c
            outer apply c.Data.nodes('row/@*') as F(C)
    )
select * 
from CTE2 x
WHERE x.Field<>'Product'

результат с указанным вопросом:

enter image description here

Я думал, что CHAR(13) должен был быть:

  '&#x0D;'

1 Ответ

2 голосов
/ 29 октября 2019

XML обеспечивает гибкость в представлении числовых ссылок на символы. Следующие представления полностью эквивалентны:

&#xD; &#x0D; &#x000D; &#x00000000D; &#xd; &#x0d; &#13; &#00000000013;

Если вам важно, какое из них генерируется, то это означает, что потребитель ваших данных не является совместимым парсером XML. К сожалению, довольно часто люди пытаются анализировать XML «вручную», даже не читая сначала спецификацию XML, так что это не редкая проблема.

Кстати, это не имеет ничего общего с XPath. Процессор XPath не сериализует свой результат;какое-то другое программное обеспечение делает это.

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