Avatar billede ktolbod Nybegynder
12. december 2005 - 11:12 Der er 6 kommentarer

Parse XML fil med ukendt node dybde

Hey experts,
jeg skal parse en XML fil med en ukendt node dybde i ASP.
Resultatet skal jeg smide i en db, men jeg kan sgu ik helt regne en sådan function ud.

XML filen ser sådan ud:

<tree id="0">
  <item id="61" text="biler"></item>
  <item id="64" text="cykler">
    <item id="63" text="postkort">
    <item id="70" text="frikadeller"></item>
    </item>
  </item>
</tree>
Avatar billede janegil Nybegynder
12. december 2005 - 11:54 #1
Og den skal lagres som om det stod
<tree id="0">
  <item id="61" text="biler"></item>
  <item id="64" text="cykler"></item>
  <item id="63" text="postkort"></item>
  <item id="70" text="frikadeller"></item>
</tree>
?

Eller har nøstingen noen semantikk som også skal inn i databasen?
Avatar billede ktolbod Nybegynder
12. december 2005 - 12:08 #2
nej den skal sådan set bare lagres, hvor jeg så selv smider noget sortering på. Så mit hoved problem er bare at travesere xml'en igennem.

Et <item> kan dog indeholde flere <item> eks:

<tree id="0">
  <item id="61" text="biler"></item>
  <item id="64" text="cykler">
    <item id="63" text="postkort">
      <item id="70" text="frikadeller"></item>
      <item id="86" text="sovs"></item>
    </item>
  </item>
</tree>
Avatar billede janegil Nybegynder
12. december 2005 - 12:27 #3
Ville XSLT-transformasjon til kommasepartert fil gi deg noe du får lagt inn i basen?

61,biler
64,cykler
63,postkort
70,frikadeller
Avatar billede janegil Nybegynder
12. december 2005 - 12:32 #4
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="item">
<xsl:value-of select="@id"></xsl:value-of>,<xsl:value-of select="@text"></xsl:value-of>
<xsl:text>
</xsl:text>
<xsl:apply-templates></xsl:apply-templates>
</xsl:template>
</xsl:stylesheet>
Avatar billede ktolbod Nybegynder
12. december 2005 - 12:48 #5
jeg havde dog ikke tænkt på at bruge xslt, men noget i stil med følgende kode hvor den så travesere alle noderne igennem:

objXML.Load (Server.MapPath("filen.xml"))

set n=objXML.selectNodes("item")

for each node in n
    txt = node.getAttribute("text")
    //Opdater db
next
Avatar billede Slettet bruger
14. december 2005 - 06:15 #6
Det du leder efer er descendant    eller //
Set n=objXML.selectNodes("//item")

for each node in n
    txt = node.getAttribute("text")
    //Opdater db
next

Se http://www.topxml.com/xsl/XPathRef.asp
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