Jag vill ha ett system (mest för att lära mig) där jag ska kunna lagra "uppdateringar" och "veckans hemsidor"! På en sida ska den senaste hemsidan/uppdateringen visas (efter datum) och på en annan ska ALLA hemsidor/uppdateringar visas! Med risk för att ha fattat frågan fel, men jag försöker ändå. Hej. Hur menar du? Kan du visa något kodexempel? HejAntagligen ganska basic xml-frågor.. glad för snabba svar!
Till att börja med undrar jag om det räcker med ett XML-dokument och där ha både uppdateringarna OCH hemsidorna eller om jag ska ha två olika?
Sedan skulle det också vara bra om någon kunde förklara eller hänvisa till en BRA länk om hur jag ska prångla ut den senaste hemsidan/uppdateringen efter ett datumattribut i XML-dokumentet!
Jag kommer fråga fler saker efter hand som arbetet "fortskrider".. bara så ni vet! Tack på förhand för alla kloka svar!
//MVH Martin FranzénSv: Antagligen ganska basic xml-frågor.. glad för snabba sva
Det finns inget som hindrar att ha två olika "informationstyper" i samma xml-dokument. Det är upp till dig att skapa strukturen. Det skulle tex kunna se ut såhär: (för att använde koden nedanför så måste du ha msxml4 installerad på servern. Finns att hämta på ms hemsida (http://msdn.microsoft.com/xml))
<code>
<root>
<hemsidor>
<hemsida uppdateratdatum="2001-10-25">
<url>www.aftonbladet.se</url>
<namn>Aftonbladet</namn>
</hemsida>
<hemsida uppdateratdatum="2001-10-26">
<url>www.expressen.se</url>
<namn>Expressen</namn>
</hemsida>
</hemsidor>
</root>
'För att läsa innehållet kan du göra sårhär:
Dim oXML As MSXML2.DOMDocument40
Dim oNodeList As MSXML2.IXMLDOMNodeList
Dim oNode As MSXML2.IXMLDOMNode
Dim sXml As String
dim sPath as string
sPath = "c:\temp\dinxmlfil.xml"
'Skapa en instans av ett domdokument
Set oXML = CreateObject("MSXML2.DOMDocument.4.0")
'Sätt properties
oXML.setProperty "NewParser", True '(för snabbare parsning)
oXML.async = False '(asynkron inläsning)
'Ladda dom-dokumentet
If Not oXML.loadXML(sPath) Then 'Ett parseerror skapas om det blir fel
'Detta händer endast om det är något fel på xml-formatet, inte innehållet!
Err.Raise oXML.parseError.errorCode, , oXML.parseError.reason
End If
'Plockar ut en collection (lista) med Nod-objekt
Set oNodeList = oXML.selectNodes("/root/hemsidor/hemsida")
'Loopa igenom alla element i listan och skriv ut dem
For Each oNode In oNodeList
sResult = sResult & "Namn: " & oNode.selectSingleNode("namn").Text & "<BR>"
sResult = sResult & "URL: " & oNode.selectSingleNode("url").Text & "<BR>"
'Plocka ut attributet
sResult = sResult & "URL: " & oNode.attributes.getNamedItem("uppdateratdatum").text & "<BR>"
Next oNode
</code>Sv: Antagligen ganska basic xml-frågor.. glad för snabba sva
Tips:
Du kan använda ADO (RecordSet) för att skapa och läsa in en XML-fil.
Det är tydligen inte så bra om det är en stor XML-fil men det är ganska smidigt...
<code>
rst.Open "C:\fil.xml"
</code>
Du använder sedan recordsetet som du brukar..Sv: Antagligen ganska basic xml-frågor.. glad för snabba sva
Sv: Antagligen ganska basic xml-frågor.. glad för snabba sva
Om det är mej du menar....<br>
Visst. Här är ett enkelt exempel. Lek vidare med detta...
<code>
Private Sub Command1_Click()
Dim con As ADODB.Connection
Set con = getCon
Dim rst As ADODB.Recordset
Set rst = New ADODB.Recordset
On Error GoTo EH_1
rst.Open "Select * From Authors", con
If FileLen(App.Path & "\test.xml") > 0 Then
Kill (App.Path & "\test.xml")
End If
rst.Save App.Path & "\test.xml", adPersistXML
MsgBox "Sparat XML - fil"
rst.Close
Exit Sub
EH_1:
MsgBox "FEL: Filen existerar redan..." & Err.Description, vbCritical, "Error:"
Set rst = Nothing
con.Close
Set con = Nothing
End Sub
Private Sub Command2_Click()
Dim rst As ADODB.Recordset
Set rst = New ADODB.Recordset
rst.Open App.Path & "\test.xml"
Do While Not rst.EOF
Debug.Print rst!Author
rst.MoveNext
Loop
rst.Close
Set rst = Nothing
End Sub
</code>
OBS... ej helt komplett, visar bara på principen...