suchen
HeimBackend-EntwicklungXML/RSS-TutorialDetaillierte Erläuterung von Codebeispielen für den RAW-Modus von FOR XML

Beschreibung:

Der Rohmodus konvertiert jede Zeile im Abfrageergebnissatz in ein XML-Element mit dem Elementnamen und wandelt die Spalten jeder Zeile in Zeilenattribute um.

Eine XML-Hierarchie kann durch Schreiben einer verschachtelten FOR XML-Abfrage generiert werden

Standardmäßig werden alle Nicht-Null-Werte als Attribute des -Elements zugeordnet.

Wenn Sie die Daten in der Abfrageergebnismenge in untergeordnete Elemente des konvertieren müssen, müssen Sie die Elements-Direktive

verwenden

Einzelheiten finden Sie im Beispiel:
FOR XML
RAW [ ('ElementName') ] 
    [ 
       <CommonDirectives> 
       [ , { XMLDATA | XMLSCHEMA [ (&#39;TargetNameSpaceURI&#39;) ]} ] 
       [ , ELEMENTS [ XSINIL | ABSENT ] 
    ] <CommonDirectives> ::= 
   [ , BINARY BASE64 ]
   [ , TYPE ]
   [ , ROOT [ (&#39;RootName&#39;) ] ]

Erstellen Sie eine Tabellenbasis mit der folgenden Struktur:

Fügen Sie Tabellendaten wie folgt ein:
列名 数据类型 允许空
id int 允许
body nvarchar(50) 允许

id body
1 aaaa
2 bbbb
3 cccc
4  
Beispiel:

A. Geben Sie die Informationen der Abfragedaten zurück und verwenden Sie den for XML-Rohmodus

/*
结果:
    <row id="1" body="aaaa" />
    <row id="2" body="bbbb" />
    <row id="3" body="dddd" />
    <row id="4" />
*/select * from base for xml raw;
, um die zu erstellen Die Ergebnismenge wird durch Angabe der ELEMENTS-Direktive in Form von Unterelementen angezeigt.

/*
结果:
    <row>
      <id>1</id>
      <body>aaaa</body>
    </row>
    <row>
      <id>2</id>
      <body>bbbb</body>
    </row>
    <row>
      <id>3</id>
      <body>dddd</body>
    </row>
    <row>
      <id>4</id>
    </row>
*/select * from base for xml raw,elements;
Uns ist aufgefallen, dass der Text mit der ID 4 in diesem Beispielsatz nicht angezeigt wird

Der Grund dafür ist, dass bei Verwendung des Elements-Befehls der folgende Befehl standardmäßig nicht angegeben wird. Bei Verwendung von abscent werden zu diesem Zeitpunkt keine Elemente für Nullwerte erstellt

Im folgenden Beispiel Satz, Nullwerte können in XML angezeigt werden, indem Elemente xsinil gleichzeitig und xsinil-Anweisungen angegeben werden, um Elemente mit Nullspaltenwerten zu erzeugen

Für jedes Datenelement wird es als -Element angezeigt, was den Eindruck erweckt, dass der Name des ein anderer ist.
/*
结果:
    <row xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <id>1</id>
      <body>aaaa</body>
    </row>
    <row xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <id>2</id>
      <body>bbbb</body>
    </row>
    <row xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <id>3</id>
      <body>dddd</body>
    </row>
    <row xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <id>4</id>
      <body xsi:nil="true" />
    </row>
*/select * from base for xml raw,elements xsinil;
C. Benennen Sie das -Element um

Wir alle wissen, dass jede XML-Datei ein Stammelement hat. Wie fügen wir sein Stammelement zu diesem XML-Text hinzu?
/*
结果:
    <baseinfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <id>1</id>
      <body>aaaa</body>
    </baseinfo>
    <baseinfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <id>2</id>
      <body>bbbb</body>
    </baseinfo>
    <baseinfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <id>3</id>
      <body>dddd</body>
    </baseinfo>
    <baseinfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <id>4</id>
      <body xsi:nil="true" />
    </baseinfo>
*/select * from base for xml raw(&#39;baseinfo&#39;),elements xsinil;
D. Um das Root-Element für die von for xml generierte XML-Datei anzugeben, kann

mit dem Root-Befehl angegeben werden. Das Standard-Root-Element ist

Derzeit scheint das generierte XML-Ergebnis sehr gut zu sein, aber wenn wir die Body-Spalte in der Datenbank in XML ändern möchten, wie ändert man das -Element?
/*
结果:
    <base xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <baseinfo>
        <id>1</id>
        <body>aaaa</body>
      </baseinfo>
      <baseinfo>
        <id>2</id>
        <body>bbbb</body>
      </baseinfo>
      <baseinfo>
        <id>3</id>
        <body>dddd</body>
      </baseinfo>
      <baseinfo>
        <id>4</id>
        <body xsi:nil="true" />
      </baseinfo>
    </base>
*/select * from base for xml raw(&#39;baseinfo&#39;),root(&#39;base&#39;),elements xsinil;
E. Ändern Sie den Elementnamen

Das aktuelle Ergebnis entspricht im Wesentlichen dem Grundformat einer XML-Datei. Wir stellen uns vor, dass wir keine Spaltennamen für die ID angeben und Körper, noch geben Sie Stammelementnamen an, noch geben Sie Elementnamen an, welche Nachteile werden auftreten? Der Nullwert mit der ID 4 wird nicht angezeigt.
/*
结果:
    <base xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <baseinfo>
        <id>1</id>
        <data>aaaa</data>
      </baseinfo>
      <baseinfo>
        <id>2</id>
        <data>bbbb</data>
      </baseinfo>
      <baseinfo>
        <id>3</id>
        <data>dddd</data>
      </baseinfo>
      <baseinfo>
        <id>4</id>
        <data xsi:nil="true" />
      </baseinfo>
    </base>
*/select id,body data from base for xml raw(&#39;baseinfo&#39;),root(&#39;base&#39;),elements xsinil;
Seitdem scheint es keinen Spaltennamen zu geben. Der vorherige Satz kann noch etwas modifiziert werden

/*
结果:
    1aaaa2bbbb3dddd4
*/
--因为id为int类型,为使id不出现列名,我们使id+0
--因为body为nvarchar类型,为使body不出现列名,我们使body+&#39;&#39;select id+0,body+&#39;&#39; from base for xml raw(&#39;&#39;), elements;

/*
结果:
    1,aaaa;2,bbbb;3,dddd;4,null;
*/select id+0,&#39;,&#39;,isnull(body,&#39;null&#39;)+&#39;&#39;,&#39;;&#39; from base for xml raw(&#39;&#39;),elements;
Modifizieren wir ihn noch einmal, damit das Ergebnis anders aussieht

Jetzt können Sie sehen, dass wir entsprechend unseren Anforderungen kombinieren können, um die von uns benötigten Ergebnisse zu generieren.
/*
结果:
    1,aaaa;2,bbbb;3,dddd;4,null;
*/select convert(nvarchar,id)+&#39;,&#39;+isnull(body,&#39;null&#39;)+&#39;;&#39; from base for xml raw(&#39;&#39;),elements;
In SQLServer2005 werden XML-Daten bereits vom Typ unterstützt, daher können Sie die schreiben TYPE-Anweisung zum Zurückgeben der Ergebnisse der FOR XML-Abfrage im XML-Datentyp, zum Beispiel:

Abschließend wird ein häufig verwendetes Beispiel verwendet, um die Anwendung des Musters für XML Raw vorzustellen.
/*
结果:
    {1,aaaa}{2,bbbb}{3,dddd}{4,null}
*/select &#39;{&#39;+convert(nvarchar,id)+&#39;,&#39;+isnull(body,&#39;null&#39;)+&#39;}&#39; from base for xml raw(&#39;&#39;),elements;
Erstellen Sie die Schülertabelle Student. Die Tabellenstruktur ist wie folgt:

Fügen Sie die Tabellendaten wie folgt ein:

declare @string nvarchar(1000)declare @xml xml/*
    消息257,级别16,状态3,第8行
    不允许从数据类型xml到nvarchar的隐式转换。请使用CONVERT函数来运行此查询。
*/
--set @string=(select id,body from base for xml raw,type)set @xml=(select id,body from base for xml raw,type)

建课程表sclass,表结构如下:

列名 数据类型 允许空
cid int 允许
name nvarchar(50) 允许

插入表数据如下:

id name
1 语文
2 数学
3 英语

建student_class表,表结构如下:

列名 数据类型 允许空
sid int  
cid int  

插入数据如下:

cid sid
1 1
1 2
1 3
2 1
3 2
3 3

至此,数据结果是:

姓名 课程
张三 语文
张三 数学
张三 英语
李四 语文
王五 数学
王五 英语

我们需要最后的结果形式如下:

姓名 课程
张三 语文,数学,英语
李四 语文
王五 数学,英语

该如何实现呢?

/*
结果:
    张三    语文,数学,英语
    李四    语文
    王五    数学,英语
*/select [name],            
stuff(
(                    
select &#39;,&#39;+[name]                    
from sclass                    
where cid in (                                    
select cid                                    
from student_class                                    
where student.sid=student_class.sid                                
)                    
for xml raw(&#39;&#39;),elements                
),            
1,1,&#39;&#39;) sclassfrom student

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung von Codebeispielen für den RAW-Modus von FOR XML. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Die Rolle von XML in RSS: Die Grundlage von syndizierten InhaltenDie Rolle von XML in RSS: Die Grundlage von syndizierten InhaltenApr 12, 2025 am 12:17 AM

Die Kernrolle von XML in RSS besteht darin, ein standardisiertes und flexibles Datenformat bereitzustellen. 1. Die Struktur- und Markup -Sprachmerkmale von XML machen es für den Datenaustausch und Speicher für den Daten. 2. RSS verwendet XML, um ein standardisiertes Format zu erstellen, um die Inhaltsfreigabe zu erleichtern. 3. Die Anwendung von XML in RSS enthält Elemente, die Futterinhalte wie Titel und Veröffentlichungsdatum definieren. 4. Vorteile umfassen Standardisierung und Skalierbarkeit sowie Herausforderungen umfassen dokumentausführende und strenge Syntaxanforderungen. 5. Zu den Best Practices gehört die Validierung der XML -Gültigkeit, die einfache Haltung, die Verwendung von CDATA und die regelmäßige Aktualisierung.

Von XML zu lesbaren Inhalten: entmystifizierende RSS -FeedsVon XML zu lesbaren Inhalten: entmystifizierende RSS -FeedsApr 11, 2025 am 12:03 AM

RssfeedsarexmldocumentsUTForContentAggregation und Distribution

Gibt es eine RSS -Alternative, die auf JSON basiert?Gibt es eine RSS -Alternative, die auf JSON basiert?Apr 10, 2025 am 09:31 AM

JSONFEED ist eine JSON-basierte RSS-Alternative, die die Einfachheit und Benutzerfreundlichkeit hat. 1) JSONFEED verwendet das JSON -Format, das leicht zu erzeugen und analysieren zu können. 2) Es unterstützt die dynamische Generation und eignet sich für die moderne Webentwicklung. 3) Die Verwendung von JSONFeed kann die Effizienz und die Benutzererfahrung des Inhaltsmanagements verbessern.

RSS -Dokumentenwerkzeuge: Erstellen, Validieren und Veröffentlichen von FeedsRSS -Dokumentenwerkzeuge: Erstellen, Validieren und Veröffentlichen von FeedsApr 09, 2025 am 12:10 AM

Wie baue, validieren und veröffentlichen Sie RSSFeeds? 1. Build: Verwenden Sie Python -Skripte, um RSSFeed einschließlich Titel, Link, Beschreibung und Veröffentlichungsdatum zu generieren. 2. Überprüfung: Verwenden Sie Feedvalidator.org oder Python -Skript, um zu überprüfen, ob RSSFeed die RSS2.0 -Standards entspricht. 3. Veröffentlichen: Laden Sie RSS -Dateien auf den Server hoch oder verwenden Sie Flask, um RSSFeed dynamisch zu generieren und zu veröffentlichen. Durch diese Schritte können Sie Inhalte effektiv verwalten und teilen.

Sicherung Ihrer XML/RSS -Feeds: Eine umfassende Sicherheits -ChecklisteSicherung Ihrer XML/RSS -Feeds: Eine umfassende Sicherheits -ChecklisteApr 08, 2025 am 12:06 AM

Methoden zur Gewährleistung der Sicherheit von XML/RSSFeeds umfassen: 1. Datenüberprüfung, 2. Verschlüsselter Transmission, 3. Zugriffskontrolle, 4. Protokolle und Überwachung. Diese Maßnahmen schützen die Integrität und Vertraulichkeit von Daten durch Netzwerksicherheitsprotokolle, Datenverschlüsselungsalgorithmen und Zugriffskontrollmechanismen.

XML/RSS -Interview Fragen und Antworten: Stufen Sie Ihr Fachwissen aufXML/RSS -Interview Fragen und Antworten: Stufen Sie Ihr Fachwissen aufApr 07, 2025 am 12:19 AM

XML ist eine Markup-Sprache, die zum Speichern und Übertragen von Daten verwendet wird, und RSS ist ein XML-basiertes Format, das zur Veröffentlichung häufig aktualisierter Inhalte verwendet wird. 1) XML beschreibt Datenstrukturen durch Tags und Attribute, 2) RSS definiert spezifische Tag -Veröffentlichungen und abonnierte Inhalte, 3) XML kann erstellt und unter Verwendung von Pythons xml.etree.elementtree -Modul, 4) XML -Knoten für Xpath Expressions, 5). Validiert werden durch Xmllint, 7) Verarbeitung großer XML -Dateien mit SAX -Parser kann die Leistung optimieren.

Advanced XML/RSS -Tutorial: Ace Ihr nächstes technisches InterviewAdvanced XML/RSS -Tutorial: Ace Ihr nächstes technisches InterviewApr 06, 2025 am 12:12 AM

XML ist eine Markup-Sprache für die Datenspeicherung und -austausch, und RSS ist ein XML-basiertes Format für die Veröffentlichung aktualisierter Inhalte. 1. XML definiert Datenstrukturen, die für den Datenaustausch und Speicher geeignet sind. 2.RSS wird für das Inhaltsabonnement verwendet und verwendet spezielle Bibliotheken bei der Parsen. 3. Wenn Sie XML analysieren, können Sie DOM oder SAX verwenden. Beim Generieren von XML und RSS müssen Elemente und Attribute korrekt festgelegt werden.

Von XML/RSS bis JSON: Moderne DatentransformationsstrategienVon XML/RSS bis JSON: Moderne DatentransformationsstrategienApr 05, 2025 am 12:08 AM

Verwenden Sie Python, um von XML/RSS in JSON zu konvertieren. 1) Quelldaten analysieren, 2) Felder extrahieren, 3) in JSON konvertieren, 4) Ausgabe von JSON. Verwenden Sie die Bibliotheken xml.etree.elementtree und FeedParser, um XML/RSS zu analysieren, und verwenden Sie die JSON -Bibliothek, um JSON -Daten zu generieren.

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Herunterladen der Mac-Version des Atom-Editors

Herunterladen der Mac-Version des Atom-Editors

Der beliebteste Open-Source-Editor

MantisBT

MantisBT

Mantis ist ein einfach zu implementierendes webbasiertes Tool zur Fehlerverfolgung, das die Fehlerverfolgung von Produkten unterstützen soll. Es erfordert PHP, MySQL und einen Webserver. Schauen Sie sich unsere Demo- und Hosting-Services an.

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Leistungsstarke integrierte PHP-Entwicklungsumgebung

EditPlus chinesische Crack-Version

EditPlus chinesische Crack-Version

Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

SecLists

SecLists

SecLists ist der ultimative Begleiter für Sicherheitstester. Dabei handelt es sich um eine Sammlung verschiedener Arten von Listen, die häufig bei Sicherheitsbewertungen verwendet werden, an einem Ort. SecLists trägt dazu bei, Sicherheitstests effizienter und produktiver zu gestalten, indem es bequem alle Listen bereitstellt, die ein Sicherheitstester benötigen könnte. Zu den Listentypen gehören Benutzernamen, Passwörter, URLs, Fuzzing-Payloads, Muster für vertrauliche Daten, Web-Shells und mehr. Der Tester kann dieses Repository einfach auf einen neuen Testcomputer übertragen und hat dann Zugriff auf alle Arten von Listen, die er benötigt.