首页 > 解决方案 > 以安全的 Rust 方式切片 XML 字符串

问题描述

标签: xmlunicoderustunsafe

解决方案


我想大多数 XML 解析器会在整个输入流级别检查有效的 UTF-8 编码,然后会在更高级别进一步检查“root”和“ß❤”是有效的 XML 名称。您当然正确地观察到这些检查可能成本高昂并且存在优化的机会;并且这些机会之一可能是利用 UTF-8 编码原则确保八位字节 x3C 永远不会出现在 UTF-8 流中,除非作为字符“<”的表示。

您还可以通过完全取消一些检查来降低解析成本。不能检测所有错误的解析器不符合 W3C 标准,但这并不意味着它毫无用处。但是,请注意不要沉迷于性能而牺牲其他一切:对于 95% 的用户来说,产生好的错误消息可能至少值得 10% 的性能开销。


推荐阅读