首页 > 解决方案 > Dataweave 2.0 - XML 控件/特殊字符转义

问题描述

更新:上下文是 MuleSoft,任何库都可以用来解决这样的场景。

我有一个不寻常的要求,因为我需要在 API 实现中接受“不正确的 XML”,并且基本上正确地转义了它们不应该存在的 XML 区域中的任何控制字符,即在属性或元素数据中,它们可以发生在任何地方。

这是为了防止最初的 APIKit/Schema 验证错误,以及需要有效 XML 的进一步 DW 转换。

试图在下面描绘一个简单的例子:

<CARS>
  <CAR>
    <MODEL ALIAS="City & Co">alpha city</MODEL>
    <YEAR>1992</YEAR>
    <MANAFACTURER>Penguin</MANAFACTURER>
    <OTHER>Made in UK & US</OTHER>
  </CAR>
  <CAR>
    <MODEL ALIAS="City & Co" MAKE="BMW">venturi city</MODEL>
    <YEAR>1994</YEAR>
    <MANAFACTURER>Penguin</MANAFACTURER>
    <OTHER>BHP > 1000</OTHER>
  </CAR>
</CARS>

在 DW 或外部库中是否有任何易于解析的 XML,并且基本上正确地转义了 & 和 < > 等控制字符?

标签: xmlspecial-charactersdataweavemulesoftcontrol-characters

解决方案


无论生成什么,都不是生成 XML,而是生成与 XML 格式相似的字符串。问题是没有任何符合标准的解析器会像提供的示例那样解析无效的 XML。您可以尝试使用 DataWeave、Groovy、Java 等中的字符串操作来破解它,但在正确转义特殊字符之前不能使用 XML。以这种方式很难涵盖所有可能的情况。也许将每个值包含在 cdata 部分中会更容易。

真正的解决方案是在源头生成有效的 XML。


推荐阅读