2016-07-27 2 views
0

일부 데이터에서 XML 파일을 생성하려고 시도하고 PrimeFaces를 사용하여 파일을 다운로드하지만이 작업을 수행하기 위해 모든 조각을 함께 넣을 수는 없습니다.XML 생성 및 다운로드

xml 파일을 생성하는 내 코드는 다음과 같습니다 : 나는 "buildRoutePath"에 대한 메서드 호출을 떠난, 그러나 이것은 단지 XML을 생성

 DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); 
     DocumentBuilder docBuilder = docFactory.newDocumentBuilder(); 

     Document doc = docBuilder.newDocument(); 
     Element rootElement = doc.createElement("RoutePaths"); 
     doc.appendChild(rootElement); 

     Attr attribute = doc.createAttribute("xmlns"); 
     attribute.setValue("http://tempuri.org/RoutePath.xsd"); 
     rootElement.setAttributeNode(attribute); 

     for(RssmXml record : xmlList) 
      rootElement.appendChild(buildRoutePath(doc,record)); 

     TransformerFactory transformerFactory = TransformerFactory.newInstance(); 
     Transformer transformer = transformerFactory.newTransformer(); 
     DOMSource source = new DOMSource(doc); 

     StreamResult result = new StreamResult(new File("someFile.xml")); 
     transformer.transform(source, result); 

.

어떻게 생성 된 XML 파일을 PrimeFaces 파일 다운로드를 사용하여 다운로드합니까?http://primefaces.org/showcase/ui/file/download.xhtml

나는이 link을 사용하는 것이 가능하다는 것을 알지만 파일을 사용하고 XML을 문자열로 변환하지 않는 것이 좋습니다.

답변

1

변환 후에 XML을 파일로 스트리밍 할 필요가 없습니다. 당신은 단지 바이트 버퍼를 사용할 수 있습니다.

ByteArrayOutputStream out = new ByteArrayOutputStream(); 
transformer.transform(source, new StreamResult(out)); 
InputStream in = new ByteArrayInputStream(out.toByteArray()); 
StreamedContent file = new DefaultStreamedContent(in, "application/xml", "file.xml"); 
+0

나는 내가지고 한 가지는 NotSerializableException http://stackoverflow.com/questions/20518363/notserializableexception-in-viewscop-bean-in-jsf?answertab을 처리하기 위해 BalusC에서 제공하는 대답과 함께이 답변을 사용 = votes # tab-top –