Avatar billede dennish Nybegynder
07. august 2007 - 13:34 Der er 2 kommentarer og
1 løsning

Lave nestede elementer i XML dokument

Hej jeg har følgende kode

Hej jeg har følgende kode

File xmlfile = null;
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
DOMImplementation impl =db.getDOMImplementation();
DocumentType doctype = impl.createDocumentType("xml", null,null);
Document xmldoc = impl.createDocument(null, "xml", doctype);
Element root = xmldoc.getDocumentElement();
Element node = xmldoc.createElement("rootid");
Text node_value = xmldoc.createTextNode(""+rootid);

addXMLNode(xmldoc,"course",value,id)
// kaldet til addXMLNode sker vie an rekursiv metode. Har undladt denne metode


xmlfile = File.createTempFile("contents", ".xml");
FileOutputStream fos = new FileOutputStream(xmlfile);
OutputFormat format = new OutputFormat();
XMLSerializer serializer = new XMLSerializer(fos,format);
serializer.serialize(xmldoc);
fos.flush();
fos.close();
node.appendChild(node_value);
root.appendChild(node);

private void addXMLNode(Document xmldoc,String name,String value,int id) {
    try {
      Element node = xmldoc.createElement(name);
      node.setAttribute("id", ""+id);
      Text node_value = xmldoc.createTextNode(value);
      node.appendChild(node_value);
      xmldoc.getDocumentElement().appendChild(node);

    } catch (Exception e) {
      log.error("adXMLdNode (" + name + ")", e.fillInStackTrace());   
    }
  }

UD fra ovenstående kan jeg genere følgende XML fil

<?xml version="1.0" encoding="UTF-8"?>
<xml>
<rootid>3353</rootid>
<course id="3353">Testing TW</course>
<page id="3355">Page 1</page>
<chapter id="3354">Kapitel 1</chapter>
<page id="4208">Side and under kapitel 1 </page>
<page id="3356">Page 2</page>
<chapter id="4210">Kapitel 2&#315;</chapter>
<page id="4211">Side kaj under kapitel 2</page>
<page id="4212">Tom side </page>
<endchapter id="4214">UnderKapitel 2.1 HEJ</endchapter>
<chapter id="4216">underkapitel 2.2</chapter>
<endchapter id="4217">under under 3</endchapter>
</xml>

Men jeg vil gerne neste/flette mine XML elementer så min fil kommer til at se således ud, hvis muligt

<chapter id="3354">
<value><![CDATA[Kapitel 1]]></value>
  <page id="4208">Side and under kapitel 1 </page>
  <page id="3356">Page 2</page>
</chapter>

Om jeg skal sætte CDATA som en tag er jeg ikke helt sikker. Nogen der har en ide om hvordan jeg får nestet mine XML tags ?
Avatar billede arne_v Ekspert
07. august 2007 - 15:45 #1
Umiddelbart lyder det som om at du skal appendChild'd til din chapter node fremfor
til document element !
Avatar billede dennish Nybegynder
09. august 2007 - 14:02 #2
super arne det var det der skulle til. Smider du ikke et svar.
Avatar billede arne_v Ekspert
09. august 2007 - 14:17 #3
Kommer her.
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