【发布时间】:2021-08-06 17:01:52
【问题描述】:
更新:上下文是 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 并且基本上正确地转义控制字符(如 & 和 )?
【问题讨论】:
-
一些 TagSoup 或 HTML 解析器可能会工作,但我不知道您是否或如何在您的上下文中使用它们。
-
例如,xsltfiddle.liberty-development.net/3MP42Ns 使用 David Carlisle 的标签汤解析器的 XSLT 2 实现将您的标记解析为 XML。要将其提供给 XSLT,我已将其作为 CDATA 部分包装到输入元素中,但您可以使用命名模板运行并传入文件 URI 并使用
unparsed-text或将内容作为字符串参数传入。 -
这不是一个罕见的问题,但它是一个非常困难的问题。生成无效 XML 的人需要认识到他们让用户的生活变得非常困难 - 这就像给人们一个只能使用非标准灯泡的灯具。
-
我认为结束这个问题并不完全公平,因为提到的其他解决方案并未专门针对问题范围内的 Mule。
-
感谢大家的投入。这似乎表明可能需要探索像 TagSoup 这样的第三方库,但不确定这对于 MuleSoft 是否微不足道。另外,我同意 Aled,如果我同意,最好保持开放状态,因为这可能是我第一次遇到这个问题,我相信这并不少见,听听其他人的想法会很有用。
标签: xml special-characters dataweave mulesoft control-characters