2009-10-02 44 views
14

Tôi đang cố tạo một tài liệu PDF bằng FOP và Java.Chuyển đổi chuỗi đầu vào thành chuỗi XML trong java

Tôi nhận XML dưới dạng chuỗi chứ không phải dưới dạng tệp.

Làm cách nào tôi có thể chuyển đổi chuỗi XML này thành luồng đầu vào XML để tôi có thể gọi xslfoTransformer.transform (nguồn, res); trong đó nguồn là chuỗi XML của tôi làm luồng đầu vào.

Vui lòng cung cấp đề xuất của bạn.

Trả lời

17

Bạn có thể muốn chuyển nó sang một Reader, không phải là một InputStream. Sử dụng StringReader để thực hiện việc này. StreamSource có một hàm tạo có một Trình đọc và bạn có thể chuyển số đó StreamSource tới Transformer.transform().

tôi nói rằng bạn có thể muốn có một Reader chứ không phải là một InputStream vì một String chứa ký tự, không byte, và một InputStream là một dòng byte trong khi một Reader là một dòng ký tự.

+0

Tôi đã thử phương pháp này nhưng tôi nhận được một ngoại lệ. java.lang.NullPointerException \t tại org.apache.fop.area.AreaTreeHandler.endDocument (AreaTreeHandler.java:264) \t tại org.apache.fop.fo.FOTreeBuilder.endDocument (FOTreeBuilder.java:171) \t tại net.sf.saxon.event.ContentHandlerProxy.close (ContentHandlerProxy.java:255) \t tại net.sf.saxon.event.ImplicitResultChecker.close (ImplicitResultChecker.java:69) \t tại net.sf.saxon.event .ProxyReceiver.close (ProxyReceiver.java:87) \t tại net.sf.saxon.event.ComplexContentOutputter.close (ComplexContentOutputter.java:468) \t tại Bất kỳ manh mối nào? – jobinbasani

+0

Ok..Tôi đã tìm ra ... Nó hoạt động khi tôi đổi tên thành phần tử gốc của xml thành 'root'. Cảm ơn sự trợ giúp !!!! – jobinbasani

1

Sử dụng ByteArrayInputStream:

String S = ...; 
InputStream source = new ByteArrayInputStream(S.getBytes(encoding)) 
+1

Ngụ ý bạn biết mã hóa của XML. Điều này thường không đúng. –

29
new StreamSource(new StringReader(str)) 
Các vấn đề liên quan