Ich versuche, einige XML-Ausgabe in einer SQL Server 2008 TSQL-Abfrage übereinstimmen. Die XML-Datei, die ich abgleiche, kann Listen mit Elementen zurückgeben. Die Listen werden anhand des Attributnamens - nicht des Knotennamens - identifiziert.Attribut zu ElementNode hinzufügen erstellt von TSQL FOR XML-Pfad
Die XML-Pfadfunktionen geben einen Wrapper-Knoten zurück, aber ich finde keine Möglichkeit, diesem Knoten Attribute hinzuzufügen. In meinem Fall handelt es sich um fest codierte Werte, die auf dem Tabellennamen basieren, für den sie ausgewählt wurden.
Ich habe das 'x' als 'x' drin, um die zwei Listen getrennt zu halten. In meinen tatsächlichen Daten ist das kein Problem, da diese sich in verschiedenen Knoten befinden. Das Problem besteht nur darin, wie Attribute zum Knoten "List" hinzugefügt werden.
ist hier ein SQL Fiddle page for the example below:
Beispielschema
create table Table1 (Value varchar(50));
create table Table2 (Value varchar(50));
insert Table1 values
('A'), ('B'), ('C');
insert Table2 values
('X'), ('Y'), ('Z');
Probe
select
(
select Value as '@I'
from Table1
for XML PATH('L'), TYPE
) as List,
'x' as 'x', -- needed to keep the Lists apart.
(
select Value as '@I'
from Table2
for XML PATH('L'), TYPE
) as List
for XML PATH
Actual
Ausgang wählen<row>
<List>
<L I="A"/>
<L I="B"/>
<L I="C"/>
</List>
<x>x</x>
<List>
<L I="X"/>
<L I="Y"/>
<L I="Z"/>
</List>
</row>
gewünschte Ausgabe: (die „N Hinzufügen ame "Attribut für den Listenwrapper.)
<row>
<List Name='Table1'> <!-- Added Attribute "Name" here -->
<L I="A"/>
<L I="B"/>
<L I="C"/>
</List>
<x>x</x>
<List Name='Table2'> <!-- Added Attribute "Name" here -->
<L I="X"/>
<L I="Y"/>
<L I="Z"/>
</List>
</row>