android 如何转义XML中的〈和≤符号?

ylamdve6  于 2023-05-05  发布在  Android
关注(0)|答案(8)|浏览(237)

我想在android中创建一个字符串<res>,如下所示:

<string name="bmi0">0: BMI≤18.5</string>
<string name="bmi1">1: 18.5<BMI≤24</string>
<string name="bmi2">2: 24<BMI≤27</string>

但是我显示了“Tag start is not closed”的错误。
我尝试在前面放一个\符号,但它不起作用,它显示了相同的错误。

<string name="bmi0">0: BMI\≤18.5</string>
<string name="bmi1">1: 18.5<BMI\≤24</string>
<string name="bmi2">2: 24<BMI\≤27</string>

如何转义特殊的XML符号?

9w11ddsr

9w11ddsr1#

您必须按以下方式转义这些符号:

  • <将是&lt;
  • >将是&gt;

字符不需要转义。

zxlwwiss

zxlwwiss3#

如前所述,对于<>,您可以使用以下命令:

<   &lt;
>   &gt;

之所以需要这样做,是因为XML中不允许使用<>,所以需要对它们进行escape。您可以通过键入以下内容来执行此操作:& + specific code for your character + ;,当你显示这个字符串时,它将被识别为特殊字符(<>)。
您还需要smaller or equal符号(≤),这在XML中是允许的,因此只需使用
这些是你必须逃避的角色:

"   =   &quot;
'   =   &apos;
<   =   &lt;
>   =   &gt;
&   =   &amp;
mtb9vblg

mtb9vblg4#

使用这个:

<   &lt;
>   &gt;
vecaoik1

vecaoik15#

使用
https://stackoverflow.com/a/4301267/2740014
转义字符串,然后将它们放入XML中。

StringEscapeUtils.escapeXml(stringHere);

这是我认为必须的。

wi3ka0sx

wi3ka0sx6#

使用Unicode
对于<,使用\u003c
对于>\u003e
对于\u2264
要获取任何字符串的unicode,请使用以下方法

public static String getUnicode(String input){
    String output = "";
    for(char c:input.toCharArray()){
        output +="\\u" + Integer.toHexString(c|0x10000).substring(1) ;
    }
    return output;
}
kqlmhetl

kqlmhetl7#

对特殊字符使用Unicode序列。
你可以在这里找到其中的一些:http://jrgraphix.net/r/Unicode/2200-22FF
这样使用它:

\u2264

将转换为

chhqkbe1

chhqkbe18#

我的两分钱:Guava15推出了Escapers,特别是在这种情况下:

Escaper escaper = XmlEscapers.xmlAttributeEscaper();
 String result = escaper.escape("<>");
 System.out.println(result); // &lt;&gt;

相关问题