XML/DOM serialization: Difference between revisions

From Rosetta Code
< XML
Content added Content deleted
mNo edit summary
Line 1: Line 1:
{{task}}
[http://down.rigour.info/blog/cantiere-investimento.htm cantiere investimento] [http://blog.rigour.info/web/viaggi-costa/ viaggi costa rica] [http://blog.rigour.info/web/la-guerra/ la guerra del fuoco] [http://italy.rigour.info/blog/www-il.htm www il mattino it] [http://online.rigour.info/donnevecchie/ donnevecchie] [http://web.rigour.info/prova-scitta/ prova scitta italiano] [http://all.rigour.info/imobiliare/ imobiliare] [http://guest.rigour.info/library/html/discoteche-legnano/ discoteche legnano] [http://speed.rigour.info/foppapedretti-lettini.htm foppapedretti lettini] [http://milano.rigour.info/mai-hi.htm mai hi] [http://gratis.rigour.info/content/view/route-.htm route 66 mobile italia 2005] [http://load.rigour.info/view/new/hyundai-atos.htm hyundai atos 1999] [http://dir.rigour.info/maria-rosa/ maria rosa] [http://speed.rigour.info/jeans-seal.htm jeans seal kay] [http://up.rigour.info/description/lib/crack-sp.htm crack sp1 xp] [http://dir.rigour.info/listini-prezzi/ listini prezzi mitsubishi pajero] [http://web.rigour.info/plan-b/ plan b dj joe] [http://milano.rigour.info/ipod-gb.htm ipod 6gb] [http://online.rigour.info/poltrona-piscina/ poltrona piscina] [http://down.rigour.info/blog/z-casio.htm z3 casio] [http://web.rigour.info/hitachi/ hitachi 1 8] [http://up.rigour.info/description/lib/laserjet-.htm laserjet 1100 toner] [http://milano.rigour.info/registratore-digitale.htm registratore digitale creative] [http://milano.rigour.info/nathalie-cardone.htm nathalie cardone hasta siempre] [http://paga.rigour.info/videogiochi/ videogiochi] [http://blog.rigour.info/web/laser-colori/ laser colori a3] [http://load.rigour.info/view/new/zoppas-p.htm zoppas p 6] [http://blog.rigour.info/web/condono-edilizio/ condono edilizio in toscana] [http://paga.rigour.info/travelmate-lmi/ travelmate 4051lmi] [http://note.rigour.info/content/view/collettivo-sole.htm collettivo sole luna] [http://web.rigour.info/giochi-miniclip/ giochi miniclip] [http://it.rigour.info/topic/veicoli-elettrici/ veicoli elettrici] [http://paga.rigour.info/batteria-philips/ batteria philips 355] [http://here.rigour.info/blog/foutu.htm foutu] [http://content.rigour.info/html/somos-gitanos/ somos gitanos gipsy kings] [http://load.rigour.info/view/new/apple-presenta.htm apple presenta il piccolo ipod shuffle] [http://dir.rigour.info/runing/ runing] [http://it.rigour.info/topic/manjon/ manjon] [http://milano.rigour.info/memory-stick.htm memory stick pro 1] [http://up.rigour.info/description/lib/d-arrigo.htm d arrigo] [http://uve.rigour.info/blog/video-naomi.htm video naomi cambel] [http://note.rigour.info/content/view/donna-nudi.htm donna nudi] [http://italy.rigour.info/blog/bennett-james.htm bennett, james gordon] [http://here.rigour.info/blog/jane-seggiolino.htm jane seggiolino racing] [http://up.rigour.info/description/lib/la-gang.htm la gang di laura] [http://note.rigour.info/content/view/moventi-diversi.htm moventi diversi] [http://speed.rigour.info/appunti-microeconomia.htm appunti microeconomia] [http://dir.rigour.info/audigy/ audigy 4] [http://online.rigour.info/rifiuti/ rifiuti] [http://gratis.rigour.info/content/view/ssis-parma.htm ssis parma] [http://it.rigour.info/topic/decollete-d/ decollete 3d] [http://web.rigour.info/i-ll/ i ll fly with you tanzen remix] [http://milano.rigour.info/brother-dr.htm brother dr 2000] [http://gratis.rigour.info/content/view/suoinerie-nokia.htm suoinerie nokia 3310] [http://speed.rigour.info/mini-bikini.htm mini bikini] [http://gratis.rigour.info/content/view/il-mostro.htm il mostro del museo delle cere] [http://italy.rigour.info/blog/controllo-statistico.htm controllo statistico dei processi] [http://speed.rigour.info/batterie-nokia.htm batterie nokia 9110] [http://italy.rigour.info/blog/tagliacapelli.htm tagliacapelli 15] [http://it.rigour.info/topic/norwood-massachusetts/ norwood (massachusetts)] [http://down.rigour.info/blog/dvd-philips.htm dvd philips bulk] [http://pagina.rigour.info/documento-del/ documento del 15 maggio] [http://uve.rigour.info/blog/giovani-nel.htm giovani nel 1968] [http://pagina.rigour.info/autoradio-ingresso/ autoradio ingresso] [http://web.rigour.info/salt/ salt] [http://guest.rigour.info/library/html/www-sorrisi/ www sorrisi rai it] [http://here.rigour.info/blog/contratto-artigianato.htm contratto artigianato] [http://online.rigour.info/misrepresented-people/ misrepresented people] [http://content.rigour.info/html/scoobydoo-ps/ scooby-doo ps2 videogiochi] [http://note.rigour.info/content/view/gdv.htm gdv] [http://gratis.rigour.info/content/view/oggetti-di.htm oggetti di fantasia] [http://web.rigour.info/touran-trendline/ touran trendline] [http://pagina.rigour.info/camere-livorno/ camere livorno] [http://pagina.rigour.info/rex-combinato/ rex combinato a] [http://online.rigour.info/digital-pen/ digital pen nokia] [http://blog.rigour.info/web/fotos-ivy/ fotos ivy queen] [http://down.rigour.info/blog/wwww-vacanze.htm wwww vacanze] [http://paga.rigour.info/roll-deep/ roll deep] [http://dir.rigour.info/master-sound/ master sound reference 845] [http://dir.rigour.info/foto-sexy/ foto sexy di anna valle] [http://up.rigour.info/description/lib/occhiali-caravan.htm occhiali caravan] [http://uve.rigour.info/blog/traduzione-italiano.htm traduzione italiano inglese programma] [http://all.rigour.info/la-volpe/ la volpe a tre zampe] [http://all.rigour.info/olio-e/ olio e aceto] [http://milano.rigour.info/mirosul.htm mirosul] [http://blog.rigour.info/web/bas-armagnac/ bas armagnac] [http://dir.rigour.info/feldkirch/ feldkirch] [http://load.rigour.info/view/new/spot-estremi.htm spot estremi] [http://content.rigour.info/html/federgolf/ federgolf] [http://guest.rigour.info/library/html/telefonini-umts/ telefonini umts samsung sgh z300] [http://web.rigour.info/vendita-memorie/ vendita memorie ram] [http://here.rigour.info/blog/samsung-microonde.htm samsung microonde ce 287 dn-s] [http://paga.rigour.info/nikon-/ nikon 70-300 g] [http://down.rigour.info/blog/orientale-sudan.htm orientale (sudan)] [http://online.rigour.info/a-fsi/ a3 fsi] [http://guest.rigour.info/library/html/kalmia/ kalmia] [http://it.rigour.info/topic/veloso-caetano/ veloso caetano] [http://blog.rigour.info/web/svizzera-lugano/ svizzera lugano] [http://paga.rigour.info/osculati/ osculati] [http://up.rigour.info/description/lib/tettoie-in.htm tettoie in legno] [http://up.rigour.info/description/lib/vivavoce-nokia.htm vivavoce nokia 3100] [http://down.rigour.info/blog/la-ragazza.htm la ragazza del golden saloon] [http://uve.rigour.info/blog/prime-immagini.htm prime immagini di gioco per scarface] [http://guest.rigour.info/library/html/so-far/ so far away dire straits] [http://blog.rigour.info/web/scheda-wlan/ scheda wlan] [http://uve.rigour.info/blog/ulubat.htm ulubat] [http://all.rigour.info/ramsus/ ramsus] [http://pagina.rigour.info/lightn/ lightn] [http://milano.rigour.info/trucchi-pc.htm trucchi pc gta 3] [http://guest.rigour.info/library/html/camicia-nere/ camicia nere] [http://dir.rigour.info/sei-giorni/ sei giorni di enduro 2004] [http://blog.rigour.info/web/hd-foto/ hd foto] [http://pagina.rigour.info/magnanina/ magnanina] [http://paga.rigour.info/sopravvivenza-antichi/ sopravvivenza antichi] [http://blog.rigour.info/web/il-bigliardo/ il bigliardo] [http://note.rigour.info/content/view/ferrari-wlmi.htm ferrari 4002wlmi] [http://content.rigour.info/html/nomi-in/ nomi in cinese] [http://it.rigour.info/topic/mozzafiato/ mozzafiato] [http://pagina.rigour.info/shantung/ shantung] [http://uve.rigour.info/blog/eco-drive.htm eco drive citizen orologi] [http://italy.rigour.info/blog/previsioni-lotto.htm previsioni lotto gratis] [http://web.rigour.info/di-simone/ di simone] [http://load.rigour.info/view/new/beebob.htm beebob] [http://italy.rigour.info/blog/sulla-neve.htm sulla neve] [http://speed.rigour.info/pegao.htm pegao] [http://note.rigour.info/content/view/aeg-a.htm aeg a frigo] [http://online.rigour.info/sulla-strada/ sulla strada jack kerouac libri] [http://dir.rigour.info/cavigliera/ cavigliera] [http://load.rigour.info/view/new/www-match.htm www match com] [http://milano.rigour.info/ipod-nano.htm ipod nano 4gb nero] [http://online.rigour.info/piedras-y/ piedras y flores] [http://uve.rigour.info/blog/newport-news.htm newport news va] [http://uve.rigour.info/blog/piaggio-liberty.htm piaggio liberty 200 4t] [http://milano.rigour.info/la-canzone.htm la canzone del destino] [http://up.rigour.info/description/lib/ozone-mai.htm ozone mai a hi] [http://here.rigour.info/blog/la-terza.htm la terza luna] [http://content.rigour.info/html/www-caravanbacci/ www caravanbacci it] [http://guest.rigour.info/library/html/prova/ prova] [http://milano.rigour.info/nintendogs-ds.htm nintendogs ds] [http://blog.rigour.info/web/ricevitore-gps/ ricevitore gps blutooth] [http://load.rigour.info/view/new/sua-altezza.htm sua altezza si sposa] [http://milano.rigour.info/il-ventre.htm il ventre di maria] [http://guest.rigour.info/library/html/panasonic-th/ panasonic th 37pv500] [http://here.rigour.info/blog/dvbt-stick.htm dvb-t stick usb] [http://up.rigour.info/description/lib/la-noit.htm la noit] [http://all.rigour.info/hard-core/ hard core tv] [http://web.rigour.info/libri-musica/ libri musica] [http://web.rigour.info/crack-dj/ crack dj mixstation 2] [http://uve.rigour.info/blog/masterizzatori-pc.htm masterizzatori pc] [http://it.rigour.info/topic/las-palmas/ las palmas] [http://it.rigour.info/topic/carol/ carol] [http://milano.rigour.info/maialino-it.htm maialino it] [http://up.rigour.info/description/lib/filmati-donne.htm filmati donne nude] [http://speed.rigour.info/fiat-panda.htm fiat panda 1 3 multijet emotion] [http://pagina.rigour.info/modem-router/ modem router adsl d-link] [http://all.rigour.info/km-renault/ km0 renault grand scenic auto km 0] [http://paga.rigour.info/juana-le/ juana le virgin] [http://gratis.rigour.info/content/view/giardino-di.htm giardino di tamara] [http://paga.rigour.info/kniphofia/ kniphofia] [http://online.rigour.info/www-regionesicilia/ www regionesicilia it] [http://it.rigour.info/topic/appunto-diritto/ appunto diritto] [http://all.rigour.info/adidas-superstar/ adidas superstar uomo] [http://uve.rigour.info/blog/ultima-decapitazione.htm ultima decapitazione] [http://here.rigour.info/blog/sette-dollari.htm sette dollari sul rosso] [http://gratis.rigour.info/content/view/gattopardo-il.htm gattopardo, il-] [http://pagina.rigour.info/geforce-le/ geforce 5700le] [http://all.rigour.info/gioca-joue/ gioca joue] [http://here.rigour.info/blog/free-matura.htm free matura movie gallery] [http://web.rigour.info/adattatore-auto/ adattatore auto usb accessori palmari] [http://milano.rigour.info/asus-vgt.htm asus v9999gt td] [http://content.rigour.info/html/poggibonsi/ poggibonsi] [http://all.rigour.info/concessionario-renault/ concessionario renault milano] [http://dir.rigour.info/hp-officejet/ hp officejet psc1610] [http://it.rigour.info/topic/georgia-shopping/ georgia shopping] [http://it.rigour.info/topic/breath-easy/ breath easy blue] [http://up.rigour.info/description/lib/canon-.htm canon 350 digitale] [http://online.rigour.info/voli-peru/ voli peru] [http://it.rigour.info/topic/rasmus-midi/ rasmus midi] [http://note.rigour.info/content/view/chrysler-concessionario.htm chrysler concessionario firenze] [http://paga.rigour.info/piscina-teramo/ piscina teramo] [http://gratis.rigour.info/content/view/fiat-bravo.htm fiat bravo 1.9 jtd torino] [http://web.rigour.info/problemi-renault/ problemi renault espace] [http://web.rigour.info/nikon-fm/ nikon fm] [http://down.rigour.info/blog/la-faccia.htm la faccia dell ignoranza] [http://gratis.rigour.info/content/view/lg-.htm lg 8120 sblocco] [http://it.rigour.info/topic/oops-video/ oops video] [http://load.rigour.info/view/new/murat-kekilli.htm murat kekilli] [http://down.rigour.info/blog/videoregistratore-dvd.htm videoregistratore dvd hd lan] [http://note.rigour.info/content/view/annuncio-affitti.htm annuncio affitti trentino alto adige] [http://down.rigour.info/blog/acer-n.htm acer n50] [http://pagina.rigour.info/lampada-di/ lampada di emergenza] [http://note.rigour.info/content/view/testi-canzoni.htm testi canzoni internazionali] [http://dir.rigour.info/acer-travelmate/ acer travelmate hd] [http://italy.rigour.info/blog/smode-studio.htm smode studio] [http://here.rigour.info/blog/gigi-d.htm gigi d alessio nuovo album] [http://it.rigour.info/topic/foto-di/ foto di angelina jolie] [http://dir.rigour.info/chi-ha/ chi ha vinto piu coppe al mondo calcio] [http://pagina.rigour.info/diffusori-thx/ diffusori thx] [http://paga.rigour.info/hp-designjet/ hp designjet 70] [http://paga.rigour.info/resident-evil/ resident evil movie] {{task}}


Create a simple DOM and having it serialize to:
Create a simple DOM and having it serialize to:
Line 29: Line 29:
println(document.saveXML(root))
println(document.saveXML(root))


(On the use of <code>&lt;unsafe></code>: The class has not yet been reviewed for E safety, so <code>&lt;import:...makeDocumentBuilderFactory></code> is not yet allowed. The review would probably be straightforward.)
(On the use of <code>

==[[JavaScript]]==
[[Category:JavaScript]]

'''Interpreter:''' Firefox 2.0

DOM

var doc = document.implementation.createDocument( null, 'root', null );
var root = doc.documentElement;
var element = doc.createElement( 'element' );
root.appendChild( element );
element.appendChild( document.createTextNode('Some text here') );
var xmlString = new XMLSerializer().serializeToString( doc );

E4X

var xml = <root>
<element>Some text here</element>
</root>;
var xmlString = xml.toXMLString();

E4X — with processing instruction

XML.ignoreProcessingInstructions = false;
var xml = <?xml version="1.0"?>
<root>
<element>Some text here</element>
</root>;
var xmlString = xml.toXMLString();

==[[Perl]]==
[[Category:Perl]]
use XML::DOM::BagOfTricks qw(createDocument createTextElement);
my ($doc, $root) = createDocument('root');
$root->appendChild(
createTextElement($doc, 'element', 'Some text here')
);
print $doc->toString;

==[[PHP]]==
[[Category:PHP]]

'''Interpreter:''' [[PHP]] 5

<?php
$dom = new DOMDocument();//the constructor also takes the version and char-encoding as it's two respective parameters
$dom->formatOutput = true;//format the outputted xml
$root = $dom->createElement('root');
$element = $dom->createElement('element');
$element->appendChild($dom->createTextNode('Some text here'));
$root->appendChild($element);
$dom->appendChild($root);
$xmlstring = $dom->saveXML();

==[[Python]]==
[[Category:Python]]

'''Interpreter:''' [[Python]] 2.5

from xml.dom.minidom import getDOMImplementation
dom = getDOMImplementation()
document = dom.createDocument(None, "root", None)
topElement = document.documentElement
firstElement = document.createElement("element")
topElement.appendChild(firstElement)
textNode = document.createTextNode("Some text here")
firstElement.appendChild(textNode)
xmlString = document.toprettyxml(" " * 4)


'''Interpreter:''' [[Python]] 2.5

from xml.etree import ElementTree as et
root = et.Element("root")
et.SubElement(root, "element").text = "Some text here"
xmlString = et.tostring(root)

==[[Ruby]]==
[[Category:Ruby]]
require("rexml/document")
include REXML
(xml = Document.new) << XMLDecl.new
root=xml.add_element('root')
element=root.add_element('element')
element.add_text('Some text here')
puts xml.to_s(0)

Revision as of 19:19, 21 August 2007

Task
XML/DOM serialization
You are encouraged to solve this task according to the task description, using any language you may know.

Create a simple DOM and having it serialize to:

 <?xml version="1.0" ?>
 <root>
     <element>
         Some text here
     </element>
 </root>

E

Implementation: E-on-Java

This makes use of XML libraries provided with Java.

def document := <unsafe:javax.xml.parsers.makeDocumentBuilderFactory> \
                  .newInstance() \
                  .newDocumentBuilder() \
                  .getDOMImplementation() \
                  .createDocument(null, "root", null)
def root := document.getDocumentElement()
root.appendChild(
  def element := document.createElement("element"))
element.appendChild(
  document.createTextNode("Some text here"))
println(document.saveXML(root))

(On the use of <unsafe>: The class has not yet been reviewed for E safety, so <import:...makeDocumentBuilderFactory> is not yet allowed. The review would probably be straightforward.)

JavaScript

Interpreter: Firefox 2.0

DOM

var doc = document.implementation.createDocument( null, 'root', null );
var root = doc.documentElement;
var element = doc.createElement( 'element' );
root.appendChild( element );
element.appendChild( document.createTextNode('Some text here') );
var xmlString = new XMLSerializer().serializeToString( doc );

E4X

 var xml = <root>
   <element>Some text here</element>
 </root>;
 var xmlString = xml.toXMLString();

E4X — with processing instruction

 XML.ignoreProcessingInstructions = false;
 var xml = <?xml version="1.0"?>  
 <root>
   <element>Some text here</element>
 </root>;
 var xmlString = xml.toXMLString();

Perl

use XML::DOM::BagOfTricks qw(createDocument createTextElement);

my ($doc, $root) = createDocument('root');
$root->appendChild(
    createTextElement($doc, 'element', 'Some text here')
);
print $doc->toString;

PHP

Interpreter: PHP 5

 <?php
 $dom = new DOMDocument();//the constructor also takes the version and char-encoding as it's two respective parameters
 $dom->formatOutput = true;//format the outputted xml
 $root = $dom->createElement('root');
 $element = $dom->createElement('element');
 $element->appendChild($dom->createTextNode('Some text here'));
 $root->appendChild($element);
 $dom->appendChild($root);
 $xmlstring = $dom->saveXML();
 

Python

Interpreter: Python 2.5

 from xml.dom.minidom import getDOMImplementation
 
 dom = getDOMImplementation()
 document = dom.createDocument(None, "root", None)
 
 topElement = document.documentElement
 firstElement = document.createElement("element")
 topElement.appendChild(firstElement)
 textNode = document.createTextNode("Some text here")
 firstElement.appendChild(textNode)
 
 xmlString = document.toprettyxml(" " * 4)


Interpreter: Python 2.5

 from xml.etree import ElementTree as et
 
 root = et.Element("root")
 et.SubElement(root, "element").text = "Some text here"
 xmlString = et.tostring(root)

Ruby

 require("rexml/document")
 include REXML
 (xml = Document.new) << XMLDecl.new
 root=xml.add_element('root')
 element=root.add_element('element')
 element.add_text('Some text here')
 puts xml.to_s(0)