[英]Convert SQL code that uses XML/XPath to VBScript (classic ASP)
我想将以下SQL Server代码转换为经典ASP中的VBScript ...
DECLARE @idoc int
DECLARE @xdoc nvarchar(4000)
DECLARE @xmldoc xml
Set @xmldoc = '<Root><Authors au_id="409-56-7008" au_lname="Bennet" au_fname="Abraham"><Titles title="The Busy Executive's Database Guide"/></Authors><Authors au_id="648-92-1872" au_lname="Blotchet-Halls" au_fname="Reginald"><Titles title="Fifty Years in Buckingham Palace Kitchens"/></Authors><Authors au_id="238-95-7766" au_lname="Carson" au_fname="Cheryl"><Titles title="But Is It User Friendly"/></Authors><Authors au_id="722-51-5454" au_lname="DeFrance" au_fname="Michel"><Titles title="The Gourmet Microwave"/></Authors><Authors au_id="712-45-1867" au_lname="del Castillo" au_fname="Innes"><Titles title="Silicon Valley Gastronomic Treats"/></Authors><Authors au_id="427-17-2319" au_lname="Dull" au_fname="Ann"><Titles title="Secrets of Silicon Valley"/></Authors><Authors au_id="267-41-2394" au_lname="Ellis" au_fname="Michael"><Titles title="Cooking with Computers: Surreptitious Balance Sheets"/><Titles title="Sushi for Anyone"/></Authors><Authors au_id="213-46-8915" au_lname="Green" au_fname="Marjorie"><Titles title="The Busy Executive's Database Guide"/><Titles title="You Can Combat Computer Stress"/></Authors></Root>'
SELECT
Authors.value('./@au_id', 'varchar(20)') as au_id,
Authors.value('./@au_fname', 'varchar(20)') as au_fname,
Authors.value('./@au_lname', 'varchar(20)') as au_lname,
Authors.value('Titles[1]/@title', 'varchar(20)') as Title
FROM
@xmldoc.nodes('/Root/Authors') as TableValues(Authors)
如何用经典的ASP(VBScript)编写以上代码?
你能帮我吗?
我建议将此逻辑封装到存储过程中。 然后,只需从您的经典ASP页面调用此存储过程即可。 您将花费太多时间将这种逻辑从SQL Server的内置XML解析功能转换为VBScript。 VBScript没有丰富的功能来解析xml文档。
使用最好的工具完成工作。 如果存在管理上的限制,也许要尝试唤起某人的理智。 我知道这不能像您预期的那样回答您的特定问题。
Create Procedure GetAuthors
AS
DECLARE @idoc int ,
@xdoc nvarchar(4000) ,
@xmldoc xml
SELECT @xmldoc = ''
SELECT Authors.value('./@au_id', 'varchar(20)') as au_id,
Authors.value('./@au_fname', 'varchar(20)') as au_fname,
Authors.value('./@au_lname', 'varchar(20)') as au_lname,
Authors.value('Titles[1]/@title', 'varchar(20)') as Title
FROM @xmldoc.nodes('/Root/Authors') as TableValues(Authors)
<%
Dim xmldoc
Set xmldoc = Server.CreateObject("MSXML2.DOMDocument.4.0")
xmldoc.SetProperty "SelectionLanguage", "XPath"
''# note the escaped double quotes
xmldoc.LoadXml "<Root><Authors au_id=""409-56-7008"" au_lname=""Bennet"" au_fname=""Abraham""><Titles title=""The Busy Executive's Database Guide""/></Authors><Authors au_id=""648-92-1872"" au_lname=""Blotchet-Halls"" au_fname=""Reginald""><Titles title=""Fifty Years in Buckingham Palace Kitchens""/></Authors><Authors au_id=""238-95-7766"" au_lname=""Carson"" au_fname=""Cheryl""><Titles title=""But Is It User Friendly""/></Authors><Authors au_id=""722-51-5454"" au_lname=""DeFrance"" au_fname=""Michel""><Titles title=""The Gourmet Microwave""/></Authors><Authors au_id=""712-45-1867"" au_lname=""del Castillo"" au_fname=""Innes""><Titles title=""Silicon Valley Gastronomic Treats""/></Authors><Authors au_id=""427-17-2319"" au_lname=""Dull"" au_fname=""Ann""><Titles title=""Secrets of Silicon Valley""/></Authors><Authors au_id=""267-41-2394"" au_lname=""Ellis"" au_fname=""Michael""><Titles title=""Cooking with Computers: Surreptitious Balance Sheets""/><Titles title=""Sushi for Anyone""/></Authors><Authors au_id=""213-46-8915"" au_lname=""Green"" au_fname=""Marjorie""><Titles title=""The Busy Executive's Database Guide""/><Titles title=""You Can Combat Computer Stress""/></Authors></Root>"
Dim Author
Response.Write "<table>" & vbNewLine
For Each Author In xmldoc.SelectNodes("/Root/Authors")
Response.Write "<tr>" & vbNewLine
WriteTableCell Author.GetAttribute("au_id")
WriteTableCell Author.GetAttribute("au_fname")
WriteTableCell Author.GetAttribute("au_lname")
WriteTableCell Author.SelectSingleNode("Titles[1]/@title")
Response.Write "</tr>" & vbNewLine
Next
Response.Write "</table>" & vbNewLine
''# table cell output factored into a Sub, for reuse and cleaner code
Sub WriteTableCell(xmldata)
Dim s
If IsObject(xmldata) Then
If xmldata Is Nothing Then
s = ""
Else
s = xmldata.text
End If
Else
s = CStr(xmldata)
End If
Response.Write "<td>" & Server.HTMLEncode(s) & "</td>" & vbNewLine
End Sub
%>
经过测试,有效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.