Я разбираю некоторые HTML4 с помощью Groovy's XmlSlurper
с поддержкой тегов Parser
.Groovy XmlSlurper с TagSoup и неразрывными значениями пространства
Я получаю text()
узла успешно, но пробелы HTML
затрудняют попытку проверить равенство с другим значением. В частности, .trim()
фактически не обрезает строку всех пробелов. Мне кажется, что символы с обеих сторон значения - это пробелы (см. Код ниже), но String.trim()
не обрезает, как я ожидал. Как видно из примера кода, Character.isSpaceChar()
для первого символа в строке определяется как пробельный символ.
Почему String.trim()
не обрезает это значение, которое я получил от XmlSlurper
?
@Grab('org.ccil.cowan.tagsoup:tagsoup:1.2.1')
import org.ccil.cowan.tagsoup.Parser
def html = '''
<html>
<body>
<span id="interested"> hello </span>
</body>
</html>
'''
def slurper = new XmlSlurper(new Parser())
def document = slurper.parseText(html)
def value = document.'**'.find { it['@id'] == 'interested' }.text()
println "value=[${value}]"
println "first char isWhitespace? ${Character.isWhitespace(value.charAt(0))}"
println "first char isSpaceChar? ${Character.isSpaceChar(value.charAt(0))}"
assert 'hello' == value.trim()
Урожайность:
value=[ hello ]
first char isWhitespace? false
first char isSpaceChar? true
Exception thrown
Assertion failed:
assert 'hello' == value.trim()
| | |
| | hello
| hello
false
Я использую Groovy Version: 2.3.6 JVM: 1.8.0 Vendor: Oracle Corporation OS: Mac OS X
В этом конкретном примере 'trim()' не удалял пробелы. – Opal
Это как раз вопрос: почему он не обрезает пробел (или, по крайней мере, известный 'isSpaceChar()')? –
вы также можете использовать '\ p {javaSpaceChar}' в regexp, чтобы избавиться от большого количества нежелательных нежелательных сообщений. – cfrick