Domanda

Sto scrivendo un'applicazione Lua che genera un feed Atom. In questo momento, sto generando XML "a mano" -. Stringhe scrittura di file

Questo non sembra il modo migliore, anche se può essere. Io sono sempre nervoso di avere la fuoriuscita esattamente a destra. Qualcuno ha fatto niente di simile in Lua prima?

Devo restare con la generazione "a mano"? O scrivere un wrapper per una libreria C esistente?

(Perl, al confronto, sembra avere una pletora di opzioni .)

È stato utile?

Soluzione 2

ora ho una risposta più alla mia domanda: ho scritto attacchi Lua per C generatore XML di Tim Bray, Genx .

Ecco il suo homepage ; ecco la progetto su Bitbucket . Si tratta di una associazione incompleta in questo momento, ma funziona per compiti semplici:

require 'genx'
d = genx.new(io.stdout)

d:startElement('farm')

d:startElement('crop')
d:attribute('type', 'fruit')
d:text('Apricots')
d:endElement()

d:startElement('crop')
d:attribute('type', 'vegetable')
d:text('Zucchini')
d:endElement()

d:endElement()

produce:

<farm><crop type="fruit">Apricots</crop><crop type="vegetable">Zucchini</crop></farm>

Personalmente, trovo questo tipo di "streaming" interfaccia un po 'più bello di lavorare con un'interfaccia di albero-based per la generazione.

Altri suggerimenti

Ho generato XML a mano troppo. Ho creato un'API che assomiglia a:

function XmlElement(tag, text, attr)
    ...
end

function XmlSubelement(root, tag, text, attr)
    ...
end

Poi usarlo:

local root = XmlElement("Level0")
XmlSubelement(root, "Level1", "some text")
XmlSubelement(root, "Level1", "some more text")

local s = root:tostring()

Non ho il codice più a lungo, ma stare su uno schermo tra cui la citazione.

Ci sono varie librerie di dati di persistenza per Lua così, molti sono descritti al wiki del Lua utente . Il pagina su XML ha informazioni che potrebbero aiutare.

La bella gente sopra a progetto Keplero hanno generatori per HTML che possono essere utilizzati per generando XML valido. (Dead link.)

C'è anche Cosmo che è un quadro modello generalizzato che può essere utilizzato per generare XML (tra l'altro cose).

Modifica

Capisco la preoccupazione per i modelli non necessariamente offrono garanzie che l'uscita rimane ben formati. Sono abbastanza sicuro che di Cosmo gli autori sarebbero infelici se un modello ben formato mai prodotto un documento mal-formato, ma c'è ancora il problema di citare correttamente il contenuto. Nei contesti in cui l'ho usato, questo non è stato un problema per me, ma anche io non sono state lavorando da testo di origine non attendibile.

Ci sono anche progetti iscritti al LuaForge che possono essere utili:

  • Lua Elemento Albero mappe un documento XML da e verso un albero di tabelle. Esso utilizza Expat per la lettura, e sostiene di generare valide XML durante la scrittura.

  • LuaSOAP Include la generazione di XML e l'analisi sufficienti per le transazioni SOAP. Se si decide di scrivere il proprio generatore, questo potrebbe essere un buon punto di partenza per un dialetto limitata, come RSS o Atom.

Inoltre, so che ho visto un progetto che ha implementato un DOM completo per i documenti HTML e sostenuto sia l'analisi e documenti generazione, ma non riesco a ricordare il suo nome o individuarlo oggi al LuaForge.

Modifica 2: Ecco un altro pacchetto che non avevo notato prima, anche se è incluso in Lua per Windows : LuaXML . Si associa tra XML e nido di tavoli Lua, e può leggere e scrivere XML.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top