我正在尝试使用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中的MQ阶段定义了包含此XML的1个输出列 3)在XML Assembly中,使用&#39; String Set&#39;选项 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一起工作..有什么建议吗?
答案 0 :(得分:0)
真实文件是否如上所示? (文件中有多行)因为错误消息读起来不像文件中的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'。 即。
<!DOCTYPE note>