You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jsoup未转义带引号元素属性值中的特殊字符(<,>)问题咨询

XML属性值包含<和>时的转义问题

我在编程构建属性值包含<和>的Element时得到了意外结果,是不是遗漏了相关规则?

测试代码如下:

Element e = new Element("E");
e.attr("key", "value");
e.attr("code", "<X>");
assertEquals("<E key=\"value\" code=\"&lt;X&gt;\"></E>", e.outerHtml());

测试失败,实际结果与预期不符:

expected: <E key="value" code="&lt;X&gt;"></E> but was: <E key="value" code="<X>"></E>


问题解析

  1. XML与HTML的转义规则差异:

    • 严格XML语法要求属性值中的<必须转义为&lt;,这是强制规则;>则属于可选转义范畴。
    • 你调用的outerHtml()方法是按HTML规则输出的,在HTML规范中,属性值用双引号包裹时,<并非强制转义(浏览器可正确解析),因此库没有对其进行转义处理。
  2. 解决方案:

    • 若需要严格符合XML的输出标准,不要使用HTML相关的输出方法(如outerHtml()),改用库提供的XML序列化方法(比如asXml(),具体方法名取决于你使用的库),这样会按照XML规则自动转义<为&lt;。

内容的提问来源于stack exchange,提问作者ondruska

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 07:37:11