Почему Apache Commons StringEscapeUtils escapeXML10 не работает в Groovy? - PullRequest
0 голосов
/ 27 июня 2019

У меня есть простой скриптовый скрипт, где я хочу экранировать строку для XML ...

 @Grapes(@Grab(group='org.apache.commons', module='commons-lang3',version='3.9'))
import org.apache.commons.lang3.StringEscapeUtils

 def value = "[Apple MacBook Pro with Touch Bar - 15.4 & Core i7 - 16 GB RAM - 512 GB SSD]"
 StringEscapeUtils.escapeXml11​(value.toString())

Согласно документам , похоже, что этому методу нужна только строка, так почему он дает это исключение ...

 No signature of method: static org.apache.commons.lang3.StringEscapeUtils.escapeXml11​() is applicable for argument types: (String) values: [[Apple MacBook Pro with Touch Bar - 15.4 & Core i7 - 16 GB RAM - 512 GB SSD]]

Ответы [ 2 ]

1 голос
/ 27 июня 2019

В вашем коде есть непечатаемый символ:

  Offset: 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F   
00000000: 53 74 72 69 6E 67 45 73 63 61 70 65 55 74 69 6C    StringEscapeUtil
00000010: 73 2E 65 73 63 61 70 65 58 6D 6C 31 31 E2 80 8B    s.escapeXml11b..
00000020: 28 76 61 6C 75 65 2E 74 6F 53 74 72 69 6E 67 28    (value.toString(
00000030: 29 29 0A                                           )).

См. После Xml11?

Он отлично работает с обычными символами.

1 голос
/ 27 июня 2019

Я протестировал и получил то же сообщение об ошибке, но я изменил метод на escapeXml11, и теперь он работает:

import org.apache.commons.lang3.StringEscapeUtils

class Program {
    static void main(String[] args) {
        testStringUtils()
    }

    private static void testStringUtils() {
        def value = "[Apple MacBook Pro with Touch Bar - 15.4 & Core i7 - 16 GB RAM - 512 GB SSD]"
        def sample = StringEscapeUtils.escapeXml11(value)
        println(sample)
    }
}

Я использую версию 3.9:

compile group: 'org.apache.commons', name: 'commons-lang3', version: '3.9'

Это вывод:

> Task :Program.main()
[Apple MacBook Pro with Touch Bar - 15.4 & Core i7 - 16 GB RAM - 512 GB SSD]

BUILD SUCCESSFUL in 1s
2 actionable tasks: 2 executed
17:24:42: Task execution finished 'Program.main()'.
...