2012-07-13 3 views
1

xml 파일은 xmloutputter으로 처음 만들어졌습니다. 헤더가 생성되면 처음에는 헤더가 생성되지만 정보를 추가하면 헤더가 없습니다. 나왔어?정보를 추가 할 때 xml 파일에서 omitt 헤더가 어떻게 붙는 지

편집

  Element performances = new Element("performances"); 
      Document doc = new Document(performances); 

      performances.setAttribute(new Attribute("date", dateFormat.format(cal.getTime()))); 

      //Uptime 
      Element uptime = new Element("uptime"); 
      uptime.addContent(new Element("days").setText(new Long(duptime).toString())); 
      uptime.addContent(new Element("hours").setText(new Long(huptime).toString())); 
      uptime.addContent(new Element("minutes").setText(new Long(muptime).toString())); 
      uptime.addContent(new Element("seconds").setText(new Long(suptime).toString())); 
      doc.getRootElement().addContent(uptime); 
      //TotalHitsCount 
      doc.getRootElement().addContent(new Element("totalhitcount").setText(new Long(stats.gettotal_hit_count()).toString())); 
      //EmittedBytes 
      doc.getRootElement().addContent(new Element("emittedbytes").setText(new Long(stats.getemitted_bytes()).toString())); 
      //Avghitsec 
      doc.getRootElement().addContent(new Element("avghitsec").setText(new Float(stats.getavg_hit_sec()).toString())); 
      //Avgbyteshit 
      doc.getRootElement().addContent(new Element("avgbyteshit").setText(new Long(stats.getavgbytes_hit()).toString())); 
      //Avgbps 
      doc.getRootElement().addContent(new Element("avgbps").setText(new Long(stats.getavgbps()).toString())); 
      //Total threads 
      doc.getRootElement().addContent(new Element("totalthreads").setText(new Long(stats.gettotal_threads()).toString())); 
      //Idle threads 
      doc.getRootElement().addContent(new Element("idlethreads").setText(new Long(stats.getidle_threads()).toString())); 

      XMLOutputter xmlOutput = new XMLOutputter(); 

      xmlOutput.setFormat(Format.getPrettyFormat()); 
      xmlOutput.output(doc, new FileWriter((String)path+"performances.xml",true)); 
+0

xmloutputter 란 무엇입니까? JDK에서는 클래스가 아닌 것 같습니다. –

+0

jdom 패키지에 속합니다 – Mazzy

답변

2

xml 형식에서 허용하지 않으므로 수행 할 수없는 작업입니다. XML 문서의 경우 루트 수준 태그가 하나 있습니다. 비록 대부분의 xml 도구로 할 수있는 xml 헤더를 생략하더라도 xml 파일은 유효하지 않습니다 (표준 xml 파서에서이 파일을 읽어야한다고 가정합니다).

<?xml version="1.0"?> 
<performances> 
    <update/> 
    <!-- ... more xml elements ... --> 
</performances> 
<performances> 
    <update/> 
    <!-- ... appended xml elements ... --> 
</performances> 

을하고하지 유효한 XML 파일 입니다 :

파일은 다음과 같이됩니다.

xml 파일에 "추가"하려면 기존 파일을 읽고 추가 노드가있는 전적으로으로 다시 써야합니다. 이 작업을 수행하는 간단한 방법은 DocumentBuilder를 사용하여 기존 파일을 DOM으로 읽어 들이고 새 노드를 기존 루트 요소에 추가 한 다음 전체 XML 파일을 다시 쓰는 것입니다.

은 추가 가능한 방식으로 데이터를 작성해야하며 xml 이외의 파일 형식 (예 : CSV와 같은 일종의 단순 구분 파일)을 사용하는 것이 좋습니다.

0

당신이 다음이 method on Formatconstructor for XMLOutputter를 사용하여 시도?

Element performances = new Element("performances"); 
    Document doc = new Document(performances); 
    XMLOutputter xmlOutput = new XMLOutputter(); 

    Format format = Format.getPrettyFormat(); 
    format.setOmitDeclaration(true); 
    xmlOutput.setFormat(format); 

    StringWriter writer = new StringWriter(); 
    xmlOutput.output(doc, writer); 
    System.out.println(writer); 

은 XML 선언이없는 표준 출력으로 나타납니다.

+0

예 제가 시도했지만 형식 객체에서 해당 메소드를 호출 할 수 없습니다 ... 위의 코드 – Mazzy