웹 API에서 XML을 검색 한 다음 Groovy를 사용하여 해당 XML을 구문 분석하는 코드를 작성하고 있습니다. 안타깝게도 Groovy의 XmlParser와 XmlSlurper는 .text()가 호출 될 때 노드 속성에서 줄 바꿈 문자를 제거하는 것으로 보입니다.XML Groovy에서 구문 분석 스트립 특성 새 줄
의 텍스트에서 줄 바꿈을 포함하여을 어떻게 얻을 수 있습니까?
샘플 코드 :입니다
def xmltest = '''
<snippet>
<preSnippet att1="testatt1" code="This is line 1
This is line 2
This is line 3" >
<lines count="10" />
</preSnippet>
</snippet>'''
def parsed = new XmlParser().parseText(xmltest)
println "Parsed"
parsed.preSnippet.each { pre ->
println pre.attribute('code');
}
def slurped = new XmlSlurper().parseText(xmltest)
println "Slurped"
slurped.children().each { preSnip ->
println [email protected]()
}
출력 그중 : 나는 그것을 구문 분석하기 전에
Parsed
This is line 1 This is line 2 This is line 3
Slurped
This is line 1 This is line 2 This is line 3
좋아, 내가 텍스트를 변환 할 수 있었다 다음 다시 변환 한 후, 라 :
def newxml = xmltest.replaceAll(/code="[^"]*/) {
return it.replaceAll(/\n/, "~#~")
}
def parsed = new XmlParser().parseText(xmltest)
def code = pre.attribute('code').replaceAll("~#~", "\n")
내가 좋아하는 해킹이 아니지만 XML 출력이 수정 될 때까지 수행됩니다.
XML을 생성하는 사람들에게 XML 파일의 속성에있는 캐리지 리턴을 다른 것으로 대체 할 수있는 기회가있을 가능성을 알았습니다. char string 텍스트를 읽을 때 캐리지 리턴에 BACK을 넣을 수 있습니까? 실제 XML 변경을 기다리는 동안이 문제를 해결할 수있는 해킹입니다. – billjamesdev
글자 참조로 놀아 볼 수도 있고, 작동하지 않는다면 직접 처리 할 수있는 사용자 지정 교체 가능 시퀀스를 사용해 볼 수도 있습니다. – SteveD