Klassische ASP Import Remote XML file in SQL server

Zuerst möchte ich sagen, dass ich denke, dass meine Frage zeitaufwendig sein kann, damit die Leute es in einem kompletten Sinn lösen können, also verstehe ich, dass es völlig möglich ist, dass die komplette Antwort nur so viel zu viel verlangt, also etwas zu helfen Ich verstehe besser, wie: Lesen von Material, Beispielen, Links und / oder Rat wäre großartig und ich schätze jeden Kommentar, den ich bekomme, gut oder schlecht, es macht mich einfach und diesen Ort viel besser, endlich würde ich Ich danke euch allen so sehr für alles, was ihr hier tut, das ist wirklich ein Ort, der von klugen Leuten gebaut wurde, und die Leute, die sich darum kümmern.

MEINE FRAGE

(mit klassischem ASP und SQL server)

Ich weiß, dass es möglich ist, eine entfernte XML-file zu lesen und sie dann in eine SQL server-databasetabelle einzufügen. Ich habe ein Beispiel gefunden, das tut, dass es klassischen ASP und MS Access verwendet, aber das kann in SQL server mit minimalen Codierung der URL geändert werden: http://forums.aspfree.com/code-bank-54/classic-asp-import -remote-xml-file-in-database-152966.html

Aber das Problem ist, dass ich es nicht bekommen kann, um an meiner Remote-XML-file zu arbeiten, ich habe versucht, den klassischen ASP-Code (in der Link oben gefunden) für Tage und Tage zu bearbeiten und ich kann einfach nicht, dass es so funktioniert, wie ich es möchte.

Also möchte ich von Anfang an anfangen,

Die betreffende XML-file befindet sich auf: http://www.iftach.org/taxmatrix/charts/2Q2012.xml

Ich habe ein paar Beispiele gesehen, wie man die gesamte XML-file in die SQL server-database exportieren kann (wie zB ein BULK-Insert, siehe URL: http://support.microsoft.com/kb/316005 ) und auch darüber, wie man extrahiert einige Infos. aus dem XML aber meine Anfrage ist irgendwie seltsam, da ich das Country zuerst überprüfen will und dann die Counties Rate nur und nicht die andere bekomme, ich möchte das für die gesamte XML-file machen.

Zum Beispiel ist die XML-file so:
(oder Sie können die vollständige XML-file ansehen, indem Sie auf die URL oben klicken)

 <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>US</COUNTRY> ...... ...... <RATE RATECHANGE="0" COUNTRY="US">1.5700</RATE> <RATE RATECHANGE="0" COUNTRY="CAN">1.3210</RATE> ...... ...... ...... </RECORD> </FILE> 

und so weiter….

Nun möchte ich diese Info in die SQL server-Tabelle namens FFTR und die Spalte für jede JURISDICTION

Wie zum Beispiel wäre das oben:

 Field Name 1 --> "JURISDICTION_AB_CAN" Field Name 2 --> "JURISDICTION_FL_US" and so on... 

HINWEIS:
Das Präfix JURISDICTION_ wird immer das gleiche sein, nur die beiden Buchstaben ändern sich und der CAN kann US .

Eine andere Sache ist, wenn das COUNTRY "CAN" ist, dann würde ich gerne die CAN Rate verwenden und wenn es US ist, würde ich gerne die US Rate verwenden und diese Info insert. in die database mit dem Feld "RATE". (Die Rate wird immer 4 Dezimalstellen sein) Die Rate, die ich möchte, ist nur unter: <FUEL_TYPE>Special Diesel</FUEL_TYPE> Ich brauche nicht die anderen Preise.

Und das letzte, was ich tun möchte, ist, das <QUARTER>2Q2012</QUARTER> in ein Feld mit dem Namen "Quarter"

So würde die endgültige SQL server-database so aussehen (mit den 2 datasätzen als Beispiel oben)

 Field Name: JURISDICTION_AB_CAN Rate: 0.0900 Quarter: 2Q2012 Field Name: JURISDICTION_FL_US Rate: 1.5700 Quarter: 2Q2012 

Also, was ich versuchte zu tun ist das (siehe Code unten) und ich habe es zu jeder Zeile zu zeigen, aber es kommt nicht einmal in der Nähe einer Lösung:

 <% 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> 

Ich denke sogar, dass das Hinzufügen zu einem ADODB Recordset wäre toll und dann würde ich es in SQL server eins nach dem anderen insert oder einfach nur loop es alle da drin, aber es zeigt mir nur die Spalten Ich brauche die Zeilen dort auch. Siehe Code unten:

 <% 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> 

Nochmals vielen Dank für jeden Rat, Links oder irgendeine Hilfe überhaupt …

schau mal hier an: msxml DOM

Sie sollten das msxml-object verwenden, um das XML zu lesen. dann kannst du die Elemente der xml mit Hilfe der api abfragen.

Beispielcode zum Laden der xml:

 <% dim xml : set xml = server.createobject("Msxml2.DOMDocument.6.0") dim xmlString : xmlString = getXMLHTTPResponse("http://www.iftach.org/TaxMatrix/charts/2Q2012.xml") xml.loadxml(xmlString) function getXMLHTTPResponse(url) dim tout, xmlhttp set xmlhttp = server.createObject("Msxml2.serverXMLHTTP.6.0") with xmlhttp .setTimeouts 2000, 2000, 2000, 2000 .open "GET", url, false .send() if .responseXML.xml = "" then getXMLHTTPResponse = .responseText else getXMLHTTPResponse = .responseXML.xml end if end with end function %> 

Endlich!!! Ich habe es funktioniert, wenn jemand braucht die Lösung, die es unten ist: Mit dem Code, den ich in der Frage gepostet habe, habe ich den folgenden Code hinzugefügt:

Anmerkung: Ich weiß, dass dies nicht der beste path ist, es zu tun, da ich nicht nach den TAGS / IDs / Namen gehe, aber die XML-file wird immer gleich bleiben, also habe ich gerade Looped, Cut out was ich brauchte und Eingefügt / In die DB aktualisiert.

  <% ' LOOP ALL OF THE FIELDS ONE BY ONE For x = 0 to xml.documentelement.childnodes.length - 1 set XMLobjchildnodes = xml.documentelement.childnodes strXMLtxt=xml.documentElement.childNodes(x).text & "<br>" ' SETUP THE UPDATE FIELDS FOR SQL dim strTest strTest="objSQL(""IMP_STATE_" & Mid(strXMLtxt,1,2) & """)=" & Mid(strXMLtxt,46,7) ' SKIP THE Fi and 2Q because they are not States/Prov. if strTest="objSQL(""IMP_STATE_Fi"")=" OR strTest="objSQL(""IMP_STATE_2Q"")=" then else ' ALSO SKIP hi and U and CN because they also are not States/Prov. if InStr(strTest,"STATE_ht")>0 OR InStr(strTest,"STATE_U.")>0 OR InStr(strTest,"STATE_CN")>0 then else ' ADD YOUR SQL CONNECTION INFO. HERE AND THEN INSERT/UPDATE THE SQL DB end if Next %> 

Hinweis: Wenn Sie kleine Änderungen vornehmen, können Sie es einstellen, um die data in SQL einzufügen und / oder zu aktualisieren, falls dies ein Problem für jedermann ist, lassen Sie mich bitte wissen, dass ich mehr dann gerne helfen werde.

Für alle, die versucht haben, mein Problem / Frage zu lösen, Vielen Dank für all deine harte Arbeit und Anstrengung.