Avatar billede ze-men Nybegynder
14. maj 2008 - 15:20 Der er 3 kommentarer

Omskrive en XML-fil

Hej eksperter..

Jeg har en xml-fil med nogle items, der skal overflyttes til en anden xml-fil. Jeg havde selv tænkt at køre det ene xml ind over en php, der så skriver den endelige xml.

Hvordan gør jeg det?

Jeg vil fra følgende fil: http://runja.dk/xml/SJMedier.xml
Til følgende fil: http://runja.dk/xml/24S_Weather_DataFile.xml
Avatar billede wise Seniormester
14. maj 2008 - 22:55 #1
Hejsa

Prøv evt at kigge på XSLT (XML stylesheets). Det er for længe siden jeg har kigget på det til at jeg kan komme med eksempler, jeg tror dog at <t1.... kan være svær at ramme for jeg mener ikke man kan anvende variable på den måde.

Ideen med XSLT er ellers netop at konvertere fra et xml sæt til et andet... (ofte til xhtml, altså websites)
Avatar billede bauerdata Nybegynder
21. maj 2008 - 18:57 #2
<%@LANGUAGE=Python%>
<%
# Licence GPL
# se http://support.microsoft.com/kb/276494 der er beskrevet hvordan du
# opsætter din asp server til at bruge python
import sys
import pdb

from xml.dom.ext.reader.Sax2 import FromXmlStream
from xml.dom.ext            import PrettyPrint

# get DOM object
xmlFile = open("fra.xml")
doc = FromXmlStream( xmlFile )

Values = {}
# pdb.set_trace()

for elements in doc.getElementsByTagName("dataelement"):
    elements.normalize()
    for Typer in elements.getElementsByTagName("type"):
        type = Typer.firstChild.data
    for Byer in elements.getElementsByTagName("location"):
        town =  Byer.firstChild.data
    for Value in elements.getElementsByTagName("value"):
        value =  Value.firstChild.data

    try:
        Values[ town ][ type ] = value
    except:
        Values[ town ] = { type:value }

data = Values.items()
Response.Write( """<?xml version="1.0" encoding="UTF-8"?>
<Weather>
  <Towns>""")
i = 0
for item in data:
    i += 1
    Response.Write( "  <t%s>%s</t%s>" % ( i, item[0], i )    )
Response.Write( """
  </Towns>
  <Temperatures>""")
i = 0
for item in data:
    i += 1
    Response.Write( "  <t%s>%s</t%s>" % ( i, item[1]["Temperature"], i ) )
Response.Write( """
  </Temperatures>
  <Icons>""")
i = 0
for item in data:
    i += 1
    Response.Write( "  <t%s>%s</t%s>" % ( i, item[1]["Temperature"], i ) )
Response.Write( """
  </Icons>
</Weather>
""")
%>
Avatar billede ze-men Nybegynder
27. maj 2008 - 11:33 #3
Bauerdata > Jeg har php-server!
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