Avatar billede delirious Nybegynder
15. september 2004 - 13:03 Der er 6 kommentarer og
1 løsning

ændring af encoding i xml

Jeg får følgnede encoding når jeg laver et xml-dokument i java:
<?xml version="1.0" encoding="UTF-8"?>

Jeg kunne godt tænke mig at encodingen bliver til sat til ISO-8859-1.

Hvad gør man for at ændre dette?
Avatar billede arne_v Ekspert
15. september 2004 - 13:07 #1
Hvordan skriver du din XML fil ?
Avatar billede delirious Nybegynder
15. september 2004 - 13:14 #2
public void skrivTilFil(Transportmiddel transportmiddel, String dato) {
    int loginnr = transportmiddel.getVognmand().getLoginnr();
    String navn = "";
    String vejnavn1 = "";
    String by1 = "";
    int postnr1 = 0;
    float xKoordinat1 = 0F;
    float yKoordinat1 = 0F;

    for (int i = 0;
        i < transportmiddel.getAdresseListe().getAfleveringsliste().size(); i++) {
      AfleveringsSted afleveringsSted = (AfleveringsSted) transportmiddel.
          getAdresseListe().getAfleveringsliste().elementAt(i);
      navn = afleveringsSted.getNavn();
      vejnavn1 = afleveringsSted.getVejnavn();
      by1 = afleveringsSted.getBy();
      postnr1 = afleveringsSted.getPostNr();
      xKoordinat1 = afleveringsSted.getXKoordinat();
      yKoordinat1 = afleveringsSted.getYKoordinat();
    }

    int breveInd = 0;
    int breveUd = 0;
    int pakkerInd = 0;
    int pakkerUd = 0;
    for (int i = 0; i < transportmiddel.getLast().getGittervogn().size(); i++) {
      Gittervogn gittervogn = (Gittervogn) transportmiddel.getLast().
          getGittervogn().elementAt(i);

      if (gittervogn.isBrev() == true && gittervogn.isInd() == true) {
        breveUd++;
      }
      else if (gittervogn.isBrev() == true && gittervogn.isInd() == false) {
        breveInd++;
      }
      else if (gittervogn.isBrev() == false && gittervogn.isInd() == true) {
        pakkerUd++;
      }
      else if (gittervogn.isBrev() == false && gittervogn.isInd() == false) {
        pakkerInd++;
      }
    }

    // lav nyt DOM træ
    try {
      DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
      DocumentBuilder db = dbf.newDocumentBuilder();
      Document doc = db.newDocument();

      // tilføj elementer til DOM træ
      Element vognmand = doc.createElement("vognmand");
      vognmand.setAttribute("loginnr", "" + loginnr);
      Element afleveringssted = doc.createElement("afleveringssted");
      afleveringssted.setAttribute("navn", "" + navn);

      vognmand.appendChild(afleveringssted);
      Element adresse = doc.createElement("adresse");
      Element vejnavn = doc.createElement("vejnavn");
      vejnavn.appendChild(doc.createTextNode("" + vejnavn1));
      Element by = doc.createElement("by");
      by.appendChild(doc.createTextNode("" + by1));

      Element postnr = doc.createElement("postnr");
      postnr.appendChild(doc.createTextNode("" + postnr1));
      Element xKoordinat = doc.createElement("xKoordinat");
      xKoordinat.appendChild(doc.createTextNode("" + xKoordinat1));
      Element yKoordinat = doc.createElement("yKoordinat");
      yKoordinat.appendChild(doc.createTextNode("" + yKoordinat1));

      afleveringssted.appendChild(adresse);
      adresse.appendChild(vejnavn);
      adresse.appendChild(by);
      adresse.appendChild(postnr);
      adresse.appendChild(xKoordinat);
      adresse.appendChild(yKoordinat);

      Element levering = doc.createElement("levering");
      afleveringssted.appendChild(levering);
      levering.setAttribute("datoOgTid", "" + dato);

      Element afleveret = doc.createElement("afleveret");
      Element modtaget = doc.createElement("modtaget");
      levering.appendChild(afleveret);

      Element tag1 = doc.createElement("tags");
      Element tag2 = doc.createElement("tags");

      for (int i = 0; i < transportmiddel.getLast().getTag().size(); i++) {
        Tag tag = (Tag) transportmiddel.getLast().getTag().elementAt(i);
        if (tag.isInd() == false) {
          Element tagkode = doc.createElement("tag");
          tagkode.appendChild(doc.createTextNode("" + tag.getKode()));
          tag1.appendChild(tagkode);
          afleveret.appendChild(tag1);
        }
        else {
          Element tagkode = doc.createElement("tag");
          tagkode.appendChild(doc.createTextNode("" + tag.getKode()));
          tag2.appendChild(tagkode);
          modtaget.appendChild(tag2);
        }
      }

      Element antalBreveA = doc.createElement("antalBreve");
      antalBreveA.appendChild(doc.createTextNode("" + breveInd));

      Element antalPakkerA = doc.createElement("antalPakker");
      antalPakkerA.appendChild(doc.createTextNode("" + pakkerInd));
      afleveret.appendChild(antalBreveA);
      afleveret.appendChild(antalPakkerA);

      levering.appendChild(modtaget);

      Element antalBreveM = doc.createElement("antalBreve");

      antalBreveM.appendChild(doc.createTextNode("" + breveUd));
      Element antalPakkerM = doc.createElement("antalPakker");

      antalPakkerM.appendChild(doc.createTextNode("" + pakkerUd));
      modtaget.appendChild(antalBreveM);
      modtaget.appendChild(antalPakkerM);

      Element registrering = doc.createElement("registrering");
      registrering.setAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance");
      registrering.setAttribute("xsi:noNamespaceSchemaLocation", "skema.xsd");
      registrering.appendChild(vognmand);
      doc.appendChild(registrering);

      // udskriv DOM træ
      OutputFormat fmt = new OutputFormat();
      fmt.setIndenting(true);
//      XMLSerializer ser = new XMLSerializer(System.out, fmt);
      //Skal bruges hvis den skal skrives ud til fil

      FileWriter fil = new FileWriter(loginnr + ".xml");
      XMLSerializer ser = new XMLSerializer(new PrintWriter(fil), fmt);
      ser.serialize(doc);
    }
    catch (FactoryConfigurationError e) {
      e.printStackTrace();
    }
    catch (ParserConfigurationException e) {
      e.printStackTrace();
    }
    catch (IOException e) {
      e.printStackTrace();
    }
    return;

  }
Avatar billede arne_v Ekspert
15. september 2004 - 13:26 #3
XMLSerializer har en setEncoding metode.

Så prøv:

ser.setEncoding("ISO-8859-1");
Avatar billede delirious Nybegynder
15. september 2004 - 13:31 #4
Det er prøvet, men den metode findes ikke.
Avatar billede arne_v Ekspert
15. september 2004 - 13:40 #5
Så må jeg huske forkert.

Er er OutputFormat (altså fmt) der har den metode ??
Avatar billede delirious Nybegynder
15. september 2004 - 13:44 #6
10 point til dig havde jeg nær sagt... men du får 15 hvis du poster et svar
Avatar billede arne_v Ekspert
15. september 2004 - 13:47 #7
ok
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