xml - 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,并且基本上正确地转义了 & 和 < > 等控制字符?
解决方案
无论生成什么,都不是生成 XML,而是生成与 XML 格式相似的字符串。问题是没有任何符合标准的解析器会像提供的示例那样解析无效的 XML。您可以尝试使用 DataWeave、Groovy、Java 等中的字符串操作来破解它,但在正确转义特殊字符之前不能使用 XML。以这种方式很难涵盖所有可能的情况。也许将每个值包含在 cdata 部分中会更容易。
真正的解决方案是在源头生成有效的 XML。
推荐阅读
- reactjs - 更新状态后如何获取价值
- firebase - 通过 API 创建的 Firebase 动态链接的生命周期是多久?
- sql - 如何从包中调用函数
- wordpress - 如何为 WooCommerce 付费客户提供隐藏网站的随机 URL
- python - DataClass 删除 inf 值
- python - ModuleNotFoundError:没有名为 {directory} 的模块
- sqlite - 当任何行中有任何更新时,根据用户 ID 自动更新多个表
- c++ - C++ 中嵌套 If 的行为是什么?
- serialization - IIB v9 中 DFDL 消息中的无效字符处理
- javascript - 反应本机甲板滑动器库