2013-05-29 19 views
6

Tôi có một số mã như:Chuyển đổi một Nguồn Stax trong Java

XMLInputFactory xif = XMLInputFactory.newInstance() 
TransformerFactory tf = TransformerFactory.newInstance("org.apache.xalan.processor.TransformerFactoryImpl", null) 

Transformer t = tf.newTransformer() 
DOMResult result = new DOMResult() 
t.transform(new StAXSource(reader), result) 

nào tạo ra được lỗi sau:

Caught: javax.xml.transform.TransformerException: Can't transform a Source of type javax.xml.transform.stax.StAXSource

Đối tượng độc giả là loại com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl

+0

Vì vậy, vấn đề ở đây là tôi nên sử dụng TransformerFactory loại 'org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl'. Thật không may, Eclipse dường như không cung cấp điều đó cho tôi. Nó cũng đáng chú ý là mã tương tự bên ngoài Eclipse hoạt động như mong đợi. – arlogb

Trả lời

4

Vì vậy, tôi là ngớ ngẩn cố gắng điều sai. Điều này đã sửa lỗi:

System.setProperty("javax.xml.transform.TransformerFactory", 
"com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl");