Avatar billede pollas Nybegynder
30. januar 2003 - 23:19 Der er 7 kommentarer og
1 løsning

Parsing, basics

Jeg har en fil jeg gerne vil parse.

Indholdet er x antal linjer med følgende struktur <tag value1="xx" value2="xx" value3="xx" value4="xx" />

Men hvordan gøres det smartest? Jeg forestiller mig at kunne løbe dem igennem ved at isolere indholdet mellem knæk-paranteserne, hvorefter der igen løbes igennem de enkelte values. Er det bare igang med inStr, left og right, eller skal man ud i noget regular expressions?

Evt. hints, tips og links mdotages meget gerne.

På forhånd tak.
Avatar billede _darkstar_ Nybegynder
30. januar 2003 - 23:28 #1
Har du overvejet at lade være med at lave din egen parser og blot benytte MSXML-parseren?
Avatar billede pollas Nybegynder
30. januar 2003 - 23:29 #2
Tjoh... :)

Har godt set nogle specs på den, og jeg kan vel godt gå ud fra, at min host har den? Nogen tips til hvordan jeg starter på det?
Avatar billede websmith Nybegynder
30. januar 2003 - 23:30 #3
hvad med følgende smarte:

Du laver først en instr og henter al teksten imellem de to <>
herefter laver du en:

dim arr
arr=indhold.split(" ")
Hvilket giver dig et array med:
arr(0)="value1=""xx"""
arr(1)="value2=""xx"""
arr(2)="value3=""xx"""

Og herefter skulle det være easy peasy at løbe arrayet igennem og så splitte på = osv :)
Avatar billede _darkstar_ Nybegynder
30. januar 2003 - 23:53 #4
Her er specs'ne:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk/htm/sdk_intro_6g53.asp

Der er masser af eksempler på Microsofts sider. Tag et kig - de viser også hvordan man hælder det ind i ASP, JavaScript og venner.
Avatar billede pollas Nybegynder
31. januar 2003 - 04:08 #5
Nu har jeg lavet sådan en her:

<%
'Load XML
set xml = Server.CreateObject("Microsoft.XMLDOM")
xml.async = false
xml.load(Server.MapPath("pollas.opml"))

'Load XSL
set xsl = Server.CreateObject("Microsoft.XMLDOM")
xsl.async = false
xsl.load(Server.MapPath("pollas.xsl"))

'Transform file
Response.Write(xml.transformNode(xsl))
%>

Problemet er .opml'en, der så vidt jeg kan se ikke helt overholder 'normale' xml-regler...

pollas.opml:

<?xml version="1.0" encoding="utf-8"?>
<opml>
  <body>
    <outline title="yole's devblog" description="" xmlUrl="http://home.yole.ru/weblog/index.xml" htmlUrl="http://home.yole.ru/weblog/" />
    <outline title="80211b News" description="" xmlUrl="http://80211b.weblogger.com/xml/rss.xml" htmlUrl="http://80211b.weblogger.com/" />
  </body>
</opml>

Kan jeg bruge alm. xsl til formålet, eller bør opml'en være formateret 'normalt' med nestede nodes?

Jeg har prøvet mig ad med noget i retning af

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="opml/body">
  <html>
  <head><link rel="stylesheet" href="pollas.css" /></head>
  <body>
  <h2>blogroll</h2>
    <table border="1">
      <tr bgcolor="#9acd32">
        <th align="left">Title</th>
        <th align="left">Descr.</th>
      </tr>
      <xsl:for-each select="outline">
      <tr>
        <td>-<xsl:value-of select="title"/></td>
        <td>-<xsl:value-of select="description"/></td>
      </tr>
      </xsl:for-each>
    </table>
  </body>
  </html>
</xsl:template>
</xsl:stylesheet>

...men den viser ikke data - dog det rigtige antal tomme celler...

What to do...?
Avatar billede pollas Nybegynder
31. januar 2003 - 04:17 #6
Nevermind, '@' er min ven :)

Eller mere udførligt:

        <td>-<xsl:value-of select="title"/></td>
        <td>-<xsl:value-of select="description"/></td>

skal være

        <td>-<xsl:value-of select="@title"/></td>
        <td>-<xsl:value-of select="@description"/></td>

doh...
Avatar billede _darkstar_ Nybegynder
31. januar 2003 - 16:34 #7
Jamen det ser jo ud til at du er kørende. Held og lykke.
Avatar billede pollas Nybegynder
31. januar 2003 - 21:57 #8
Tak :)
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