XOM을 사용하여 엄청난 수의 검색 결과를 XML로 PrintWriter 나 OutputStream에 출력하고 싶습니다. 결과 XML은 다음과 같이 보일 것이다 :XOM을 사용하여 XML 데이터를 스트리밍하는 방법은 무엇입니까?
<?xml version="1.0" encoding="UTF-8"?>
<resultset>
<result>
[child elements and data]
</result>
...
...
[1000s of result elements more]
</resultset>
를 결과 XML 문서 (아마도 수백 메가 바이트) 큰이 될 수 있기 때문에, 내가 대신 메모리에 전체 문서를 만드는 (스트리밍 방식으로 출력 그것을 원하고 그 다음 그것을 쓰는 것).
한 번에 하나의 <result>
을 출력하는 입도가 좋기 때문에 <result>
을 생성 한 다음 스트림에 씁니다. 즉, 간단히 말해서 나는 당신이 의사처럼 뭔가를 (자동 플래시가 유효한, 그래서 그것에 대해 걱정하지 마십시오) 싶습니다
open stream/writer
write declaration
write start tag for <resultset>
while more results:
write next <result> element
write end tag for <resultset>
close stream/writer
을 내가 Serializer
보고 있지만, 필요한 방법, writeStartTag(Element)
봤는데 , writeEndTag(Element)
, write(DocType)
은 (는) 공개적으로 보호되어 있습니다. 이러한 메서드를 사용할 수 있도록 Serializer를 서브 클래 싱하는 것 외에 XOM을 모두 생략하고 문자열로 시작 및 끝 태그를 직접 스트림에 직접 쓸 수있는 방법이 있습니까? (후자는이 간단한 예제에서는 그리 나쁘지 않을 것입니다. 그러나 일반적인 경우 그것은 꽤 못생긴 것입니다.)
나는 이것을 놓치고 있거나 XOM을 만들지 않았습니까?
는 dom4j으로 난 쉽게 XMLWriter
를 사용하여이 작업을 수행 할 수 있습니다 - 그것은 공공의 write
방법이 걸리는 일입니다 XOM의 Serializer
에 비교하십시오 Writer
또는 OutputStream
및 방법 writeOpen(Element)
, writeClose(Element)
, writeDocType(DocumentType)
등 걸릴 생성자가 있습니다 전체 Document
.
그래, 나는이 방법이 가능해야한다고 생각했지만 결코 시도하지는 않았다. 이것을 확인해 주셔서 감사합니다! 어떤면에서는 이것이 또 다른 제 3 자 라이브러리 (Peter의 대답 참조)를 소개하는 것이 단순한 스트리밍을하는 것보다 바람직하다고 생각합니다. (그래도 XOM에는이 기본 제공 기능이 포함되어 있지 않습니다.) – Jonik
두 가지 모두에 동의해야합니다. –
니스. 나는 당신의 해결책을 좋아하고 다음 번에 그것을 시도 할 것입니다. –