4 Stimmen

Hinzufügen von Attributen zu Xml-Knoten in Sql Server 2005

Wenn ich dem Datensatz des Root-Elements ein Attribut hinzufügen möchte, kann ich dies von der Sql-Seite aus tun?

SELECT top 1 'text' as nodeA
                from test as z
FOR XML AUTO, ELEMENTS, root('record')

Ich möchte die Xml-Datei wie folgt erstellen:

 <Root attribute="value">
     <z>
         <NodeA>text</NodeA>
     </z>
 </Root>

8voto

marc_s Punkte 701497

Verwenden Sie die neue FOR XML PATH Syntax:

SELECT TOP 1 
   'someValue' AS '@Attribute',
   'text' as 'z/NodeA'
FROM dbo.Test
WHERE....
FOR XML PATH('YourElement'), ROOT('Root')

Dies würde in etwa Folgendes ergeben

<Root>
   <YourElement Attribute="someValue">
      <z>
         <NodeA>text</NodeA>
      </z>
   </YourElement>
</Root>

Lesen Sie hier mehr darüber:

1voto

wesm Punkte 441

Ihr Beispiel entspricht nicht dem, was verlangt wird.

Anfrage:

<Root attribute="someValue">
   <YourElement>
      <z>
         <NodeA>text</NodeA>
      </z>
   </YourElement>
</Root>

Ihre Antwort:

<Root>
   <YourElement Attribute="someValue">
      <z>
         <NodeA>text</NodeA>
      </z>
   </YourElement>
</Root>

Ich mache etwas Ähnliches und verwende PowerShell, um die Datei vor dem Speichern zu überprüfen:

Grund 1 schrubben: https://connect.microsoft.com/SQLServer/feedback/details/265956/suppress-namespace-attributes-in-nested-select-for-xml-statements

scrub Grund 2: DIES

0voto

Michal Punkte 1
SELECT 
      'someValue' AS '@Attribute',
      (SELECT TOP 1 
              'text' as 'z/NodeA'
               FROM dbo.Test
               WHERE....
               FOR XML PATH('YourElement')
       ) 
FOR XML PATH('ROOT');

Es sollte eine XML-Datei mit Root-Attribut und einer Liste von ... darin erstellen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X