2013-10-15 59 views
1

我与VFS运输WSO2ESB 4.7代理。我需要阅读一些XML文件像这样的:WSO2 ESB运输VFS,读取XML文件文档类型失败

<?xml version="1.0" encoding="ISO-8859-1"?> 
<!DOCTYPE Header PUBLIC "/usr/xxx.dtd" "/usr/xxx.dtd"> 
<Header xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
... 

代理:

<?xml version="1.0" encoding="UTF-8"?> 
<proxy xmlns="http://ws.apache.org/ns/synapse" name="test" statistics="disable" trace="disable" transports="vfs"> 
    <parameter name="transport.PollInterval">5</parameter> 
    <parameter name="transport.vfs.FileURI">C:\WSO2</parameter> 
    <parameter name="transport.vfs.FileNamePattern">.*[.][xX][mM][lL]$</parameter> 
    <parameter name="transport.vfs.ContentType">application/xml</parameter> 
    <target> 
     <inSequence> 
      <property name="OUT_ONLY" value="true"/> 
      <log level="full"/> 
      <send> 
       <endpoint> 
        ... 
       </endpoint> 
      </send> 
     </inSequence> 
    </target> 
</proxy> 

WSO2返回此错误:

[2013-10-15 11:23:03,670] ERROR - VFSTransportListener Error processing File URI : file:///C:/WSO2/1_CHRG_2713540.XML 
org.apache.axiom.om.OMException: javax.xml.stream.XMLStreamException: DOCTYPE is not allowed 
    at org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:296) 
    at org.apache.axiom.om.impl.llom.OMDocumentImpl.getOMDocumentElement(OMDocumentImpl.java:109) 
    at org.apache.axiom.om.impl.builder.StAXOMBuilder.getDocumentElement(StAXOMBuilder.java:570) 
    at org.apache.axiom.om.impl.builder.StAXOMBuilder.getDocumentElement(StAXOMBuilder.java:566) 
    at org.apache.axis2.builder.ApplicationXMLBuilder.processDocument(ApplicationXMLBuilder.java:81) 
    at org.apache.synapse.transport.vfs.VFSTransportListener.processFile(VFSTransportListener.java:574) 
    at org.apache.synapse.transport.vfs.VFSTransportListener.scanFileOrDirectory(VFSTransportListener.java:324) 
    at org.apache.synapse.transport.vfs.VFSTransportListener.poll(VFSTransportListener.java:158) 
    at org.apache.synapse.transport.vfs.VFSTransportListener.poll(VFSTransportListener.java:107) 
    at org.apache.axis2.transport.base.AbstractPollingTransportListener$1$1.run(AbstractPollingTransportListener.java:67) 
    at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
    at java.lang.Thread.run(Thread.java:662) 
Caused by: javax.xml.stream.XMLStreamException: DOCTYPE is not allowed 
    at org.apache.axiom.util.stax.dialect.DisallowDoctypeDeclStreamReaderWrapper.next(DisallowDoctypeDeclStreamReaderWrapper.java:36) 
    at org.apache.axiom.util.stax.wrapper.XMLStreamReaderWrapper.next(XMLStreamReaderWrapper.java:225) 
    at org.apache.axiom.om.impl.builder.StAXOMBuilder.parserNext(StAXOMBuilder.java:681) 
    at org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:214) 
    ... 13 more 

是否有可能获得WSO2忽略文档类型?

我不想读取文件为文本/纯,删除文档类型,转换为XML,工作有了它,转换为纯文本/,添加的doctype。

+0

上面提到的配置工作正常,我测试了它。使用“application/xml”你应该可以读取上面的输入文件而不会有问题。 –

回答

1

添加以下参数,以及向代理服务。然后它将允许DOCTYPE声明

<parameter name="ApplicationXMLBuilder.allowDTD">true</parameter>