Avatar billede dennish Nybegynder
28. juli 2007 - 17:49 Der er 2 kommentarer og
1 løsning

give et XML tag et id nr

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 {
      String tmp="";
      tmp+=name+" id="+id;
     
      log.info(tmp);
      Element node = xmldoc.createElement(name);
      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>3311</rootid>
<course>Test</course>
<page>Page 1</page>
<chapter>Kap 1</chapter>
<page>under kapitel 1 </page>
<page>Page 22</page>
<chapter>Kap 2.AA</chapter>
<page>Side Test</page>
<page>Tom side </page>
<endchapter>UnderKapitel 2.1AAA</endchapter>
<chapter>underkapitel 2.2BBB</chapter>
<endchapter>under under Kap 3</endchapter>
</xml>

Kunne dog rigtig god tænke mig at der stod noget a la
<course id ="1222">Test</course>
eller måske
<course id ="1222">
<id="1222">
Test
</id>
</course>
Da jeg ved senere læsning af XML filen genre vil have et id for hver enkelt tag, idet hver tags data skal gemmes i en database.

Nogen der har en ide om hvad jeg kan gøre ?
Avatar billede kalp Novice
28. juli 2007 - 17:55 #1
Nu har jeg ikke kigget på det i Java, men du finder sikkert en metode der hedder noget i stil med "CreateAttribute" og denne kan oprette dit id.. når attributen er oprettet så har den sikkert en metode hvori du kan indsætte din værdi 1222 (og muligvis kan du allerede gøre det når attributen oprettes og altså via. konstruktøren)

herefter kan du append din attribut til den node du vil have den skal være knyttet til... og der findes sikkert en metode der hedder appendAttribute til det.
Avatar billede dennish Nybegynder
28. juli 2007 - 18:06 #2
Takker: min metoder ser således ud nu:
Jeg har tilføjet
node.setAttribute("id", ""+id);
Min XML ser nu således ud
<course id="3353">Testing</course> ......... og jeg kan så senere hen bruge metoden getAttribute til at hente id for hver tag og derved indsætte direkte i databasen.

Kalp>> TAK for hjælpen. Smider du ikke et svar




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());     
    }
  }
Avatar billede kalp Novice
28. juli 2007 - 18:13 #3
Dennish >>

Det får du her:D
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