首先,我想说的是,我认为我的问题对于人们来说可能很耗时,因此我理解完整的答案完全有可能要求太多,所以有什么可以帮助的我更好地理解,例如:阅读材料、示例、链接和/或建议会很棒,我非常感谢我收到的任何评论,无论好坏,它只会让我和这个地方变得更好,最后,我会非常感谢你们在这里所做的一切,这确实是一个由聪明人和关心的人建造的地方。
我的问题
(使用经典 ASP 和 SQL Server)
我知道可以读取远程 XML 文件,然后将其插入到 SQL Server 数据库表中。我发现了一个使用经典 ASP 和 MS Access 的示例,但可以使用最少的编码更改为 SQL Server,URL 是:http ://forums.aspfree.com/code-bank-54/classic-asp-import -remote-xml-file-into-database-152966.html
但问题是我无法让它在我的远程 XML 文件上工作,我试图编辑经典的 asp 代码(在上面的链接中找到)几天和几天,但我无法让它以我想要的方式工作。
所以我想从头开始,
有问题的 XML 文件位于:http ://www.iftach.org/taxmatrix/charts/2Q2012.xml
我看到了一些关于如何将整个 xml 文件导出到 SQL Server 数据库中的示例(例如进行 BULK 插入,请参见 URL: http: //support.microsoft.com/kb/316005)以及如何提取一些信息。来自 XML,但我的请求有点奇怪,因为我想检查第Country
一个,然后Counties Rate
只得到那个而不是另一个,我想对整个 xml 文件执行此操作。
例如 xml 文件是这样的:(
或者您可以通过单击上面的 URL 查看完整的 xml 文件)
<FILE>
<QUARTER>2Q2012</QUARTER>
<RECORD>
<JURISDICTION ID="#15">AB</JURISDICTION>
<COUNTRY>CAN</COUNTRY>
......
......
<RATE RATECHANGE="0" COUNTRY="US">0.3366</RATE>
<RATE RATECHANGE="0" COUNTRY="CAN">0.0900</RATE>
......
......
......
</RECORD>
<RECORD>
<JURISDICTION ID="#15">FL</JURISDICTION>
<COUNTRY>U.S.</COUNTRY>
......
......
<RATE RATECHANGE="0" COUNTRY="US">1.5700</RATE>
<RATE RATECHANGE="0" COUNTRY="CAN">1.3210</RATE>
......
......
......
</RECORD>
</FILE>
等等....
现在我想将该信息插入到名为的 SQL Server 表中FFTR
,并为每个特定的列命名JURISDICTION
例如,上面将是:
Field Name 1 --> "JURISDICTION_AB_CAN"
Field Name 2 --> "JURISDICTION_FL_US"
and so on...
注意:
前缀JURISDICTION_
将始终相同,只有两个字母会更改并且CAN
可以变为US
.
另一件事是,如果 COUNTRY 是“CAN”,那么我想使用 CAN Rate,如果是 US,我想使用 US Rate 并插入该信息。使用名为“RATE”的字段进入数据库。(费率始终为小数点后 4 位)我想要的费率仅低于:<FUEL_TYPE>Special Diesel</FUEL_TYPE>
我不需要其他费率。
我想做的最后一件事是将<QUARTER>2Q2012</QUARTER>
插入到名为“Quarter”的字段中
所以最终的 SQL Server 数据库将如下所示(以上面的 2 条记录为例)
Field Name: JURISDICTION_AB_CAN
Rate: 0.0900
Quarter: 2Q2012
Field Name: JURISDICTION_FL_US
Rate: 1.5700
Quarter: 2Q2012
所以我试图做的是这个(见下面的代码),我让它显示每一行,但它甚至没有接近解决方案:
<%
Option Explicit
Response.Buffer = True
Dim xml
Set xml = Server.CreateObject("Microsoft.XMLDOM")
xml.async = False
xml.setProperty "ServerHTTPRequest", True
xml.Load ("http://www.iftach.org/TaxMatrix/charts/2Q2012.xml")
Dim paragraph1,paragraph2,paragraph3,paragraph4,paragraph5,paragraph6
paragraph1 = xml.documentElement.childNodes(1).text
paragraph2 = xml.documentElement.childNodes(2).text
paragraph3 = xml.documentElement.childNodes(3).text
paragraph4 = xml.documentElement.childNodes(4).text
paragraph5 = xml.documentElement.childNodes(5).text
paragraph6 = xml.documentElement.childNodes(6).text
Set xml = Nothing
%>
<html>
<head>
<title></title>
</head>
<body>
<p align="center"><% = paragraph1 %></p>
<p align="center"><% = paragraph2 %></p>
<p align="center"><% = paragraph3 %></p>
<p align="center"><% = paragraph4 %></p>
<p align="center"><% = paragraph5 %></p>
<p align="center"><% = paragraph6 %></p>
</body>
</html>
我什至认为将它添加到 ADODB 记录集会很棒,然后我会将它一个一个地插入 SQL Server,或者只是将它全部循环在那里,但它只显示我需要在那里的行的列。请参见下面的代码:
<%
Dim objRS
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.ActiveConnection = "Provider=MSDAOSP; Data Source=MSXML2.DSOControl.3.0;"
objRS.Open(Server.MapPath("2Q2012.xml"))
Response.Write(objRS.Fields(2) & "<br>") ' <-- Returns the Quarter only, that I need for the Quarter Field in the DB
'Response.Write(objRS.Fields(6) & "<br>") ' <-- Returns the entire xml page
Do While Not objRS.EOF
objRS.MoveNext
Loop
%>
<table border="1" width="100%">
<%
dim fld
Response.Write("<tr>")
For Each fld in objRS.Fields
If fld.Name <> "$Text" Then
Response.Write("<td>" & fld.Name & "</td>")
End If
Next
Response.Write("</tr>")
Do While Not objRS.EOF
Response.Write("<tr>")
For Each fld in objRS.Fields
If fld.Name <> "$Text" Then
Response.Write("<td>" & fld.Value & "</td>")
End If
Next
Response.Write("</tr>")
objRS.MoveNext
Loop
%>
</table>
再次,非常感谢您提供的任何建议、链接或任何帮助......