Vinnaren i pepparkakshustävlingen!
2006-11-06, 18:56
  #1
Medlem
Ja jag är Python n00b och skulle behöva skapa XML-filer enligt en given mall.

Vet att Python har lite bibliotek för detta, men är inte ens så bevandrad i att använda externa bibliotek. Nån här som experimenterat med detta?

Jag tänker att man rent teoretiskt skulle kunna spara alla intressanta grejer som skall in i XMLfilen, i variabler, och sen så bara köra en lång print på allt standardtjads och kasta in variablerna där det behövs. Dvs "printa" ut XML-syntaxen, med avbrott för variablerna. Känns som en tattarlösning dock.

Jag har lite större planer för projektet som innefattar en mysqlbas o så, men till en början tänkte jag utgå från en CSV-fil skapad i exempelvis excel. Tror ni det är enkelt eller krångligt att få värdena från CSVfilen att hamna i taggar i XMLen?
Citera
2006-11-06, 19:21
  #2
Medlem
Balthazaer-s avatar
Gör hela xml-strukturen som en multidimensionell dict i python, sen är det ju en enkel sak att gå igenom dicten rekursivt och skriva ut xmlen.
Någon magisk funktion för att _skapa_ xmlfiler vet jag inte om, däremot finns det ju moduler för att parsa xml.
Citera
2006-11-06, 20:31
  #3
Medlem
http://docs.python.org/lib/module-xml.dom.minidom.html
xml.dom.minidom - Lightweight DOM implementation kanske?
Citera
2006-11-06, 20:54
  #4
Medlem
I Ruby kan jag göra såhär tjusigt:

Kod:
require 'rubygems'
require 'builder'

xml = Builder::XmlMarkup.new(:target=>STDOUT, :indent=>2)

xml.html do
  xml.head do
    xml.title("En genererad XHTML-sida")
  end
  xml.body do
    xml.p("Lite text...")
  end
end

Med resultatet:

Kod:
<html>
  <head>
    <title>En genererad XHTML-sida</title>
  </head>
  <body>
    <p>Lite text...</p>
  </body>
</html>

Ifall jag har kört:

Kod:
gem install builder

som root. Har Python något liknande? Hur det nu skulle vara möjligt utan syntax för closures.

E: Det slog mig att man kan ha väldigt kul med Rubys flexibilitet.

Kod:
xml.instance_eval do
  html{
    body{
      div(:id=>"container"){
        div(:class=>"nav")
        div("My website!", :class=>"contents")
      }
    }
  }
end

->

Kod:
<html>
  <body>
    <div id="container">
      <div class="nav"/>
      <div class="contents">My website!</div>
    </div>
  </body>
</html>

Nu spårar jag ur offtopic med Ruby, detta är en Python-tråd. Meningen med mitt inlägg är frågan om Python har något liknande denna Builder.
Citera
2006-11-06, 21:55
  #5
Medlem
Drexls avatar
Lyssna på lyntix. Minidom är en helt ok DOM-implementation och löser de flesta problemen.

Mvh
Citera
2007-10-26, 01:44
  #6
Medlem
hezbollahs avatar
Minidom är en helt ok DOM-implementation och löser allt
Mvh
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback