Ik heb een applicatie waarom op een gegeven moment vanuit SQL server een stuk XML gegenereerd wordt. Ik gebruik hiervoor de FOR XML EXPLCIT clause, en dat werkt allemaal prima. Nu stuiten we op het feit dat de returnde XML gefilterd moet kunnen worden dmv een XPath query. Ter illustratie, het volgende XML bestand:
Moet met behulp van deze XPath:
als het ff kan de volgende XML teruggeven:
Ik snap best dat die XPath alleen die ene node3 selecteert, maar dat wil ik dus niet. Het als het nog ff kan, wil ik dat SQL server het voor me doet, maar dat hoeft an sich niet per se.
De code om de XML te genereren is als volgt:
Wat denken jullie ervan?
code:
1
2
3
4
| <node1> <node2><node3>123</node3></node2> <node2><node3>234</node3></node2> </node1> |
Moet met behulp van deze XPath:
code:
1
| /node1/node2/node3=123 |
als het ff kan de volgende XML teruggeven:
code:
1
2
3
| <node1> <node2><node3>123</node3></node2> </node1> |
Ik snap best dat die XPath alleen die ene node3 selecteert, maar dat wil ik dus niet. Het als het nog ff kan, wil ik dat SQL server het voor me doet, maar dat hoeft an sich niet per se.
De code om de XML te genereren is als volgt:
ASP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| Set Cmd = Server.CreateObject("ADODB.Command") //SqlConn is een bestaande verbinding met de SQL server Cmd.ActiveConnection = SqlConn //Downloader.Query bevat de FOR XML queries Cmd.CommandText = "SELECT '<?xml version=""1.0""" & _ "encoding=""utf-8""?>'" & vbNewLine & Downloader.Query Set Stream = Server.CreateObject("ADODB.Stream") Stream.Open Cmd.Properties("Output Stream") = Stream Cmd.Properties("Output Encoding") = "utf-8" Cmd.Execute , , 1024 Stream.Type = adTypeBinary |
Wat denken jullie ervan?
日本!🎌