Groovy의 XmlSlurper
태그가있는 HTML4를 구문 분석합니다. 태그 수는 Parser
입니다.Groovy XmlSlurper TagSoup 및 비 분리 공백 값
노드의 text()
이 성공적으로 표시되지만
공백은 다른 값과 동일한 지 테스트하려고 할 때 약간의 어려움을줍니다. 특히 .trim()
은 실제로 모든 공백의 문자열을 자르지 않습니다. 값의 양쪽에있는 문자가 공백 (아래 코드 참조)이지만 String.trim()
은 내가 기대하는 방식을 다듬지 않는 것으로 보입니다. 코드 샘플에서 볼 수 있듯이 문자열의 첫 번째 문자에 대한 Character.isSpaceChar()
은 공백 문자로 결정됩니다.
XmlSlurper
에서 얻은이 값을 String.trim()
이 트리밍하지 않는 이유는 무엇입니까?
@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}'를 사용하여 많은 공백 쓰레기를 제거 할 수 있습니다. – cfrick