まず最初に、私の質問は人々が完全な意味でそれを解決するのに時間がかかるかもしれないと思うので、完全な答えがあまりにも多くを求めている可能性があることを理解しています。資料、例、リンク、アドバイスを読むことは素晴らしいことであり、私が受け取ったすべてのコメントに感謝します。良いか悪いかを問わず、私とこの場所をより良くすることができます。ここでのすべてのことに感謝します。ここは本当に賢い人々と気遣う人々によって建てられた場所です。
私の質問
(ClassicASPとSQLServerを使用)
リモートXMLファイルを読み取って、それをSQLServerデータベーステーブルに挿入することが可能であることを私は知っています。クラシックASPとMSAccessを使用しているが、URLのコーディングを最小限に抑えてSQLServerに変更できる例を1つ見つけました。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ファイル全体をSQLServerデータベースにエクスポートする方法(BULK挿入を行うなど、URL:http ://support.microsoft.com/kb/316005を参照)と抽出方法に関するいくつかの例を見ました。いくつかの情報。Country
XMLからですが、最初にチェックしてからそれだけを取得し、もう一方は取得したくないので、私の要求はちょっと奇妙です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_
は常に同じになり、2文字だけが変更され、にCAN
なる可能性がありUS
ます。
もう1つは、国が「CAN」の場合はCANレートを使用し、米国の場合はUSレートを使用してその情報を挿入します。「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>
それをADODBRecordsetに追加するのは素晴らしいことだと思います。それから、SQL Serverに1つずつ挿入するか、すべてをループしますが、そこに必要な行しか表示されません。以下のコードを参照してください。
<%
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>
繰り返しになりますが、アドバイス、リンク、またはヘルプをありがとうございました...