Qual é o significado para XML PATH()? [fechado]

Qual é o Significado de

FOR XML PATH('')?
O que representa. Como não há nó raiz para ele.

Author: Martin Smith, 2016-05-06

2 answers

Parece haver um pouco de confusão sobre "raiz"e " Elemento". Em XML, a raiz é um único nó no topo da árvore.

Se especificarmos o caminho XML sem nada a seguir, então obtemos um conjunto de elementos XML chamados "linha". Este é um nome padrão.

USE AdventureWorks2016CTP3;
GO

SELECT BusinessEntityID, FirstName, LastName
    FROM Person.Person
    WHERE BusinessEntityID BETWEEN 14500 AND 14502
    FOR XML PATH;

enter image description here

Podemos especificar um nome diferente para o elemento XML em anexo como este.

SELECT BusinessEntityID, FirstName, LastName
    FROM Person.Person
    WHERE BusinessEntityID BETWEEN 14500 AND 14502
    FOR XML PATH('Person');

enter image description here

Se quisermos que os elementos XML sejam incluídos num nível superior elemento raiz, podemos especificá-lo assim.

SELECT BusinessEntityID, FirstName, LastName
    FROM Person.Person
    WHERE BusinessEntityID BETWEEN 14500 AND 14502
    FOR XML PATH('Person'),
    ROOT('People');

enter image description here

A especificação de um texto vazio para o nome do elemento faz com que ele deixe de fora os elementos XML em anexo. Parece-me uma coisa muito peculiar. Não consigo imaginar porque é que alguém quereria fazer isso.

SELECT BusinessEntityID, FirstName, LastName
    FROM Person.Person
    WHERE BusinessEntityID BETWEEN 14500 AND 14502
    FOR XML PATH('');

enter image description here

No entanto, os livros Online dizem que este é o comportamento correcto. Ver Sintaxe Básica da cláusula FOR XML > https://msdn.microsoft.com/en-gb/library/ms190922.aspx Argumentos > localização.

Se você fornecer um texto vazio (para a localização do XML ( " )), não é gerado nenhum elemento de invólucro.

 4
Author: RichardCL, 2016-05-06 14:54:40

De MSDN:

Se indicar um texto de tamanho zero, o elemento de embrulho não é produzido.

(' ' falha, então eu assumo que você quis dizer uma corda vazia, não um único espaço).

Isto não tem nada a ver com elementos de raiz, é para isso que serve root. Trata-se apenas do elemento de embrulho.
 1
Author: Luaan, 2016-05-06 13:19:42