我有一个输入xml,如:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:sendRequest">
<soapenv:Header/>
<soapenv:Body>
<urn:Message>
<urn:id> 12345 </urn:id>
<urn:name> srinath </urn:name>
<urn:body> >Hello< </urn:body>
</urn:Message>
</soapenv:Body>
</soapenv:Envelope>
Mule ESB DOM-to-XMl转换器在遇到'&gt;'时会出错和'&lt;'在标签中。我怎么逃避这个?输入&amp; lt等不是一种选择,因为最终用户不会被人知道。
抛出的错误是: 消息:com.ctc.wstx.exc.WstxUnexpectedCharException:意外的字符'&lt;' (代码60)在'&lt;'之后的内容中(格式错误的开始元素?)。 at [row,col {unknown-source}]:[9,26](javax.xml.transform.TransformerException) 代码:MULE_ERROR - 2
任何解决方法都有帮助!
答案 0 :(得分:3)
当然可以。这就是XML解析器的用途。如果你给他们的东西不是格式良好的XML,他们会抱怨。
XML是无情的。不要以为你可以创建一些看起来大致像XML的东西,有人会理清这些混乱。它就像一种编程语言:如果你不遵循语法,就不会编译。
你说“输入&amp; lt等不是一种选择,因为最终用户不会被人知道。”好吧,如果您无法培训最终用户生成有效的XML,那么您不应该要求他们这样做。你应该给他们一个隐藏细节的XML编辑器(例如OXygen Author),或者你应该使用更简单,更宽容的格式,如Markdown。
答案 1 :(得分:1)
是的,你可以通过两种方式做到: -
<Hello>
<![CDATA[ >Hello<]]>
所以你的输入xml将是: -
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:sendRequest">
<soapenv:Header/>
<soapenv:Body>
<urn:Message>
<urn:id> 12345 </urn:id>
<urn:name> srinath </urn:name>
<urn:body> <Hello> </urn:body>
<!-- or use this <urn:body> <![CDATA[ >Hello<]]> </urn:body> -->
</urn:Message>
</soapenv:Body>
</soapenv:Envelope>