如何逃避<和xml中的符号?

时间:2013-12-13 12:41:34

标签: java android xml string

我想在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>

但我显示“标签开始未关闭”的错误。

我尝试将\符号放在前面,但它不起作用,它显示了相同的错误。

<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符号?

8 个答案:

答案 0 :(得分:12)

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

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

符号不需要转义。

答案 1 :(得分:3)

您必须为XML转义这些符号。

What characters do I need to escape in XML documents?

答案 2 :(得分:2)

使用此:

<   &lt;
>   &gt;

答案 3 :(得分:2)

如上所述,对于<>,您可以使用:

<   &lt;
>   &gt;

您需要执行此操作,因为XML中不允许<>,因此您需要escape它们。您可以通过键入:& + specific code for your character + ;来执行此操作,当您显示此字符串时,这将被识别为特殊字符(<或{{1} })。

您还需要>符号(≤),这在XML中是允许的,所以只需使用smaller or equal

这些是你必须逃脱的角色:

答案 4 :(得分:1)

将Unicode序列用于特殊字符。

您可以在此处找到其中一些内容:http://jrgraphix.net/r/Unicode/2200-22FF

像这样使用:

\u2264

将转换为

答案 5 :(得分:1)

使用

https://stackoverflow.com/a/4301267/2740014

转义字符串,然后将它们放入xml中。

StringEscapeUtils.escapeXml(stringHere);

我认为是需要的东西。

答案 6 :(得分:1)

使用Unicode

<使用\u003c
对于> \u003e
对于 \u2264

要获取任何String的unicode,请使用以下方法

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

答案 7 :(得分:1)

仅仅是我的2美分:番石榴15引入了Escapers,特别是在这种情况下:

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