Avatar billede thomas_b Nybegynder
04. juni 2009 - 00:11 Der er 6 kommentarer

Lille hurtig xml hjælp

Hej Eksperter...

Lille hurtig hjælp...

Jeg har denne xml reader men, den tager kun den første post i xml dokumentet... kan ikke lige få et loop til at fungere...

Nogle der kan se hvordan det kunne sættes ind?

Og ekstra til det... Hvis der nu i samme gruppe (Product) findes 2 felter af eksempelvis (ProductID) skal dette bare skrives ??:

Set objProductID1 = objCatalog.selectSingleNode("//Product/ProductID")
Set objProductID2  = objCatalog.selectSingleNode("//Product/ProductID")


<%
' Lav objektet der henter data
Set objXml = Server.CreateObject("MSXML2.ServerXMLHTTP.6.0")

' Sæt eventuelt codepage (SXH_OPTION_URL_CODEPAGE)
'objXml.setOption 0, 0

' Åben UTF-8 kodet XML-fil
objXml.Open "GET", "/doc.xml", False

' Lever dataene
objXml.Send

Set objCatalog = objXml.responseXML
Set objProductCode = objCatalog.selectSingleNode("//Product/ProductCode")
Set objProductName = objCatalog.selectSingleNode("//Product/ProductName")

strOutput = _
  "<h1>Bog søgeresultat</h1>" & vbCrLf & _
  "<p>ProductCode: " & objProductCode.Text & "<br/>" & vbCrLf & _
  "ProductName: " & objProductName.Text & "</p>" & vbCrLf


Set objXml = Nothing
Set objCatalog = Nothing
Set objProductCode = Nothing
Set objProductName = Nothing

Response.Write strOutput
%>
Avatar billede tjp Mester
04. juni 2009 - 02:37 #1
'Først hentes alle Product noder ind i en liste:
Set objProducts = objCatalog.SelectNodes("//Product")

strOutput = ""

'Så løbes noderne igennem:
For Each objProduct In objProducts
  Set objProductCode = objProduct.selectSingleNode("ProductCode")
  Set objProductName = objProduct.selectSingleNode("ProductName")
  strOutput = strOutput & _
      "<h1>Bog søgeresultat</h1>" & vbCrLf & _
      "<p>ProductCode: " & objProductCode.Text & "<br/>" & vbCrLf & _
      "ProductName: " & objProductName.Text & "</p>" & vbCrLf & vbCrLf
Next

Hvis der er flere ens tags i samme gruppe, bruges igen SelectNodes
Avatar billede thomas_b Nybegynder
04. juni 2009 - 20:04 #2
Der er problemmer med ny linieskift...

Det virker ikke at lave Replace(FormatString, vbCrLf,"<br>")

Laver xml'en auto om til et eller andet ?
Avatar billede tjp Mester
07. juni 2009 - 22:43 #3
Jeg er ikke helt med på hvad du mener? Er det linjeskift i input eller strOutput?
Avatar billede thomas_b Nybegynder
07. juni 2009 - 23:07 #4
Hej...

I xml'en viser den f.eks.:

<ProductDescription>
<![CDATA[
Nedenfor er der linieskift

Linie nr. 1

osv...

]]>
</ProductDescription>

Lige nu viser den således: "Nedenfor er der linieskift Linie nr. 1 osv..."

Håber det kan forstås...
Avatar billede DjarnisX Nybegynder
19. juni 2009 - 11:39 #5
Prøv også at replace chr(10) og chr(13);


Set objProducts = objCatalog.SelectNodes("//Product")

strOutput = ""

'Så løbes noderne igennem:
For Each objProduct In objProducts
  Set objProductCode = objProduct.selectSingleNode("ProductCode")
  Set objProductName = objProduct.selectSingleNode("ProductName")

  Dim tmpCnt : tmpCnt = objProductName.Text

  tmpCnt = replace(tmpCnt, vbCrLf, "<br>")
  tmpCnt = replace(tmpCnt, chr(10), "<br>")
  tmpCnt = replace(tmpCnt, chr(13), "<br>")


  strOutput = strOutput & _
      "<h1>Bog søgeresultat</h1>" & vbCrLf & _
      "<p>ProductCode: " & objProductCode.Text & "<br/>" & vbCrLf & _
      "ProductName: " & tmpCnt & "</p>" & vbCrLf & vbCrLf
Next


---
Håber det lykkedes ;)
Avatar billede thomas_b Nybegynder
21. juni 2009 - 23:12 #6
Hehe... det hjalp ;)

et nyt problem er opstået...

Hvis jeg har nogle gupper inde under //Product

<Group>Blablabla</Group>
<Group>Blablabla</Group>
<Group>Blablabla</Group>

Har prøvet med et loop magen til inde i det eksisterende...!

Meen ikke rigtig det...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester