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.
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;
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');
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');
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('');
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.
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).
root
. Trata-se apenas do elemento de embrulho.