xmlファイル

xmlファイルから読み込んで、contentを追加して、
xmlファイルに書き込む

■読み込むxmlファイル(data.xml):

■出力したいファイル中身



text/html; charset="euc-jp"



■ソース


import java.io.IOException;
import java.io.StringWriter;
import java.io.FileOutputStream;

import org.w3c.dom.DOMException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Text;
import org.xml.sax.SAXException;

import com.sun.org.apache.xerces.internal.parsers.DOMParser;
import com.sun.org.apache.xml.internal.serialize.OutputFormat;
import com.sun.org.apache.xml.internal.serialize.XMLSerializer;

public class Test{
public Test() {
try {
DOMParser parser = new DOMParser();
parser.parse("data.xml");
Document doc = parser.getDocument();
Element root = doc.getDocumentElement();
Element returncode = doc.createElement("content-type");
root.appendChild(returncode);
Element content = doc.createElement("content");
returncode.appendChild(content);
Text code = doc.createTextNode("text/html; charset=\"euc-jp\"");
content.appendChild(code);
StringWriter writer = new StringWriter();
OutputFormat format = new OutputFormat(doc, "UTF-8", true);
XMLSerializer serializer = new XMLSerializer(writer, format);
serializer.serialize(doc);
System.out.println(writer.toString());

FileOutputStream fout = new FileOutputStream("data.xml");
fout.write(writer.toString().getBytes("UTF-8"));
fout.close();

} catch (IOException e) {
e.printStackTrace();
} catch (DOMException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
}

}

public static void main(String args) {
new Test();
}

}


requestする場合、xmlファイルに書き込む
(response一回でxmlファイル一個しか書き込めないのかな〜〜)

■ソース


import java.io.IOException;
import java.io.OutputStream;

import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletResponse;

import org.seasar.framework.exception.IORuntimeException;

public class DownloadAction {
private HttpServletResponse response;
public void download() {
// サンプルのため、ファイル名とデータは固定
final String fileName = "abc.txt";
final byte downloadData = "abcde".getBytes();
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition",
"attachment; filename=\"" + fileName + "\"");
try {
final OutputStream os = response.getOutputStream();
os.write(downloadData);
os.close();
} catch (IOException e) {
throw new IORuntimeException(e);
}
// レスポンス出力が完了したことを通知する
final FacesContext context = FacesContext.getCurrentInstance();
context.responseComplete();
}
public void setResponse(HttpServletResponse response) {
this.response = response;
}
}