2015-01-14 5 views
0

내가 으로해야한다고 가정합니다. unescape 주어진 문자열에서 XML 이스케이프 된 문자입니다. &amp;&, &quot;", &lt;, < 등으로 대체해야합니다. 순전히 기능적인 솔루션을 선호합니다.스칼라에서 Zipper로 XML 이스케이프 해제

scalaz.Zipper으로 처리하는 것이 합리적입니까? Zipper을 사용하면 포커스 오른쪽에있는 문자를 확인하고 앞으로 이동하면서 문자를 건너 뛸 수 있습니다. 과잉은 아니겠습니까? 간단한 솔루션을 제안 하시겠습니까?

답변

1

Zipper은 문자열의 문자 수를 변경하는 매핑이 아니라 양쪽에있는 문자에 대한 액세스가 필요한 1 : 1 문자 - 문자 매핑을 처리하는 것이 좋습니다.

XML 파싱 라이브러리 (scala는 scala-xml 형태로 합리적인 기본 제공), 문자열 이스케이프/언 이스케이프 유틸리티 함수 (xml을 처리하는 아파치 공유에 하나 있습니다. 엔티티 IIRC) 또는 정말로 멋진 솔루션을 원한다면 스칼라 - 파서 - 결합 자로 문자열을 파싱 할 수 있습니다.

+0

감사합니다. 아마도 '언 이스케이프 (unescape)'함수를 작성하고 그것이 어떻게되는지보아야합니다. 나는 아직도 그러한 기능이 '지퍼 (zipper)'의 좋은 사례라고 생각한다. – Michael

+0

예, 아파치에서 unescape을 사용할 수 있습니다. 나는 코드를 보았다. 이 기능을 구현하려면 수십 줄의 코드가 필요했습니다. – Michael