1

.で作成されたxmlファイルがありますxmloutputter。最初に作成するとヘッダーが作成されますが、情報を追加します。ヘッダーは追加しません。省略するにはどうすればよいですか?

編集

            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));
4

2 に答える 2

2

xml形式では許可されていないため、やりたいことができません。XML ドキュメントには、ルート レベルのタグが 1つあります。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 などの単純な区切り付きフラット ファイルなど)。

于 2012-07-14T20:53:24.707 に答える
0

Format でこのメソッドを使用してから、 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);

<performances />XML宣言なしで標準出力に与えます。

于 2012-07-14T19:44:52.193 に答える