【问题标题】:Reading XML file using MQ Stage in Datastage 9.1在 Datastage 9.1 中使用 MQ Stage 读取 XML 文件
【发布时间】:2015-12-15 17:48:39
【问题描述】:

我正在尝试使用 DS 中的 MQ 阶段读取 XML 文件。 设计 - MQ -> XML Stage -> Seq 文件

使用的 XML 文件 -

<?xml version="1.0" encoding="UTF-8"?> 
<note> 
<to>Tove</to> 
<from>Jani</from> 
<heading>Reminder</heading> 
<body>Don't forget me this weekend!</body> 
</note>

后续流程 -

1) 使用 XML 文件加载 MQ 2) 在 DS 中仅定义 1 个包含来自 MQ 阶段的 XML 的输出列 3) 在 XML 程序集中,使用 'String Set' 选项 4) 在 Document Root 中提供 XSD 文件 5) 选择严格验证选项 6)将源映射到目标

但它给我带来了以下错误-

XML_1,0: 2015-12-14 09:43:40,801 Error [XML_Parser] [] Unable to parse the XML stream: <?xml version='1.0' encoding='UTF-8'?> 
2015-12-14 09:43:40,821 Error [XML_Parser] [] com.ibm.e2.xml.exceptions.XMLRuntimeException: CDIER0007E: An error occurred while reading input: language=XML, cause=javax.xml.stream.XMLStreamException: The root element is required in a well-formed document., systemId=null, line number=2, column number=1, step=XML_Parser, source=<?xml version='1.0' encoding='UTF-8'?>. 
XMLRuntimeException$FactoryImpl.errorWhenReadingXML() 13 
RuntimeNodeBase.consumeEvent() 752 
RuntimeNodeBase.consumeEventWithLogging() 2318 
RuntimeNodeBase.consumeAction() 482 
RuntimeNodeBase.execute() 339 
NodeExecutor.processOneEvent() 163 
XMLReaderUtils.runExecutorStreaming() 201 
XMLInputStreamingHandler.itemEnd() 44 
AbstractTraverser.handleEventForHandler() 663 
AbstractTraverser.handleEvent() 534 
ItemTraverser.handleCurrentState() 91 
AbstractTraverser.continueTraversal() 475 
AbstractTraverser.startTraversal() 463 
ItemTraverser.itemBegin() 122 
AbstractTraverser.handleEventForHandler() 668 
AbstractTraverser.handleEvent() 534 
VectorTraverser.handleCurrentState() 133 
AbstractTraverser.continueTraversal() 475 
AbstractTraverser.startTraversal() 463 
AbstractRuntimeFrame.runTraverser() 1426 
AbstractRuntimeFrame.runTraverser() 1409 
UserRuntimeOperatorAdapter.runTraverser() 138 
AbstractRuntimeOperator.runTraverser() 199 
AbstractXMLProviderRuntime.process() 254 
UserRuntimeOperatorFrame.process() 93 
OperatorController.callOperatorProcess() 314 
OperatorController.runOperator() 264 
OperatorController.doReadyToExecute() 168 
OperatorController.runDataStateTransistion() 123 
OperatorController.runTransitions() 85 
OperatorController.runOperatorStep() 63 
OperatorTask.runFrame() 86 
OperatorTask.execute() 40 
AbstractTask.run() 27 
ThreadPoolExecutor$Worker.runTask() 886 
ThreadPoolExecutor$Worker.run() 908 
Thread.run() 736  

知道这是什么,我们如何解决这个问题?

我尝试使用 External Source Stage 读取相同的 XML 文件,该文件被正确解析,数据被加载到 Seq 文件中。 因此,这意味着 XML 文件是正确的并且符合 XSD。

但它不适用于 MQ.. 有什么建议吗??

【问题讨论】:

    标签: xml mq datastage


    【解决方案1】:

    真实文件是否如上图所示? (文件中的多行)因为错误消息看起来不像文件中的 CRLF(回车换行)或 LF(换行)。尝试删除 CRLF(或 LF)。

    <?xml version="1.0" encoding="UTF-8"?><note><to>Tove</to><from>Jani</from><heading>Reminder</heading><body>Don't forget me this weekend!</body></note>
    

    或者可能是它想要在第 2 行中添加一个“文档类型”。 即

    <!DOCTYPE note>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-05
      • 1970-01-01
      • 2016-02-14
      • 2016-08-31
      • 1970-01-01
      • 2011-08-22
      • 1970-01-01
      相关资源
      最近更新 更多