0

我有一个输入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 转换器在标签中遇到 '>' 和 '<' 时会出错。我该如何逃脱呢?输入 < 等不是一个选项,因为最终用户不会懂行。

抛出的错误是:消息:com.ctc.wstx.exc.WstxUnexpectedCharException:'<'(格式错误的起始元素?)之后的内容中出现意外字符'<'(代码 60)。在 [row,col {unknown-source}]:[9,26] (javax.xml.transform.TransformerException) 代码:MULE_ERROR--2

任何解决方法都是有帮助的!

4

2 回答 2

3

当然可以。这就是 XML 解析器的用途。如果你给他们的东西不是格式良好的 XML,他们会抱怨。

XML 是无情的。不要以为您可以创建大致类似于 XML 的东西,然后有人会解决这个问题。它就像一门编程语言:如果你不遵循语法,它就不会编译。

您说“输入 < 等不是一个选项,因为最终用户不会懂行。” 好吧,如果您不能训练您的最终用户生成有效的 XML,那么您不应该要求他们这样做。你应该给他们一个隐藏细节的 XML 编辑器(例如 OXygen Author),或者你应该使用更简单和更宽容的格式,比如 Markdown。

于 2014-07-18T16:49:03.020 回答
1

是的,您可以通过两种方式做到这一点:-

  • 要么使用&lt;Hello&gt;
  • 或使用 cdata 之类的:-<![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> &lt;Hello&gt; </urn:body>
  <!-- or use this <urn:body> <![CDATA[ >Hello<]]> </urn:body> -->
        </urn:Message>
   </soapenv:Body>
</soapenv:Envelope>
于 2014-07-18T17:30:27.420 回答