XML 문서의 문자를 대체하기위한 깔끔하고 효율적인 방법을 찾고 있습니다. 거의 12,000 개의 UTF-8 문자에 대해 정의 된 대체 테이블이 있으며 대부분은 단일 문자로 대체되지만 일부는 2 ~ 3 문자로 대체해야합니다 (예 : 그리스어 세타는 TH가되어야 함). 문서가 부피가 클 수 있습니다 (100MB 이상). Java로 어떻게 할 것인가? XSLT 사용에 대한 생각이 떠오르지 만 이것이 최선의 선택인지 확실하지 않습니다.Java에서 XML 문서의 문자를 효율적으로 바꾸는 방법은 무엇입니까?
답변
String.replace (..) 내 경험에 따라 매우 느립니다. 그 API를 사용하여 100MB KML 파일을 파싱하는 데 사용되어 성능이 좋지 않습니다. 그런 다음, Pattern.compile (..)을 사용하여 정규 표현식을 사전 컴파일하고 훨씬 더 빠르게 작업했습니다.
좋은 지적. XML로 처리 할 필요가 없다는 사실에 눈이 멀어서 Java 부분에 대한 최상의 솔루션을 생각하는 것을 완전히 잊어 버렸습니다. –
내가 말했듯이 그 교체는 '바'에 대한 직관적 인 'foo'가 아닙니다. 12.000 대체가 포함 된 큰 매핑 테이블이 정의되어 있습니다. 이 때문에 HashMap
네, 매핑 테이블이지도 상에 있는지 또는 데이터베이스에 저장하고 Hibernate가 그 캐싱을 처리 할 필요가 있는지 생각해보십시오. 어쩌면 전체 XML을 스캔하여 사전에 영숫자가 아닌 문자를 찾은 다음이 문자 각각에 대해 맵과 대조하여 해당 문자가 존재하는지 확인하고 사전 컴파일 된 정규 표현식을 다시 작성하는 사전 컴파일 된 정규 표현식을 사용할 수 있습니다 그 특정 문자 교체를 수행합니다. 아마도 이것이 최선의 해결책은 아니지만 여기서 아이디어를 던지고 있습니다. – limc
지나가는 XML 문서의 각 부분을 볼 수있는 SAX를 살펴보십시오. 그런 다음 텍스트 노드에 대한 작업을 수행하고 필요한 조작을 수행 할 수 있습니다.
XSLT의 문제점은 대부분의 구현에는 메모리의 전체 입력 트리가 필요하며 일반적으로 디스크 크기의 10 배입니다. 나는 XSLT 스트리밍을 할 수있는 Saxon XSLT 변압기의 상용 버전에 대해서만 알고있다. (그러나 그것은 당신의 필요에 완벽 할 것이다).
- 1. XML 문서에서 HEX 문자를 바꾸는 방법은 무엇입니까?
- 2. java에서 \ n을 바꾸는 방법은 무엇입니까?
- 3. Java를 사용하여 XML 문서의 텍스트를 바꾸는 방법
- 4. 개행 문자를 탭 문자로 바꾸는 방법은 무엇입니까?
- 5. Enter 문자를 찾고 바꾸는 방법은 무엇입니까?
- 6. 문자열에서 왜곡 된 문자를 바꾸는 방법은 무엇입니까?
- 7. 정규식을 사용하여 특수 문자를 바꾸는 방법은 무엇입니까?
- 8. Java에서 커서 위치를 효율적으로 추적하는 방법은 무엇입니까?
- 9. Java에서 Perl 프로그램을 효율적으로 호출하는 방법은 무엇입니까?
- 10. Java에서 XML 문서의 Doctype을 쉽게 변경하려면 어떻게합니까?
- 11. 큰 txt 파일을 효율적으로 검색/바꾸는 방법은 무엇입니까?
- 12. Java에서 문자열의 문자를 수정하는 방법은 무엇입니까?
- 13. xml 데이터베이스 파일을 효율적으로 작성하는 방법은 무엇입니까?
- 14. Java에서 깨진 URL을 효율적으로 감지하십시오.
- 15. Java에서 불법 XML 문자를 필터링하는 방법
- 16. 문자열의 문자를 바꾸는 방법
- 17. XML 문서에서 '<'문자를 나타내는 방법은 무엇입니까?
- 18. XML 속성에 개행 문자를 저장하는 방법은 무엇입니까?
- 19. 파이썬에서 utf-8 특수 문자를 검색하고 바꾸는 방법은 무엇입니까?
- 20. Java에서 XML 문서를 간결하게 만드는 방법은 무엇입니까?
- 21. xml java에서 요소 값을 얻는 방법은 무엇입니까?
- 22. Java에서 String에서 XML 객체를 만드는 방법은 무엇입니까?
- 23. xml 문서의 노드 범위 삭제
- 24. Java에서 텍스트 파일의 끝 부분을 효율적으로 가져 오는 방법은 무엇입니까?
- 25. XML 문서의 I18N
- 26. Emacs에서 개행 문자를 바꾸는 방법?
- 27. 변수를 바꾸는 방법은 무엇입니까?
- 28. 문자 글꼴을 확인하고 Microsoft Word 추가 기능에서 바꾸는 방법은 무엇입니까?
- 29. 어쨌든 XML 문서의 XML 문서의 내용 유형을 변경 하시겠습니까?
- 30. XML 문서의 롤백 변경
좋은 방법 중 하나는 16 비트 조회 테이블을 만들고 문자 값을 사용하여 성능 조회 및 바꾸기입니다. 이것은 XML 파서가 문자 유효성을 확인하기 위해 수행하는 것입니다. –
@ vtd-xml-author : 그래서 유니 코드 3.0에서만 작동한다는 뜻입니까? 65535 이상의 코드 포인트를 포함하는 UTF-8로 인코딩 된 XML 파일의 경우 어떻게 작동합니까? – SyntaxT3rr0r
좋은 지적. 질문에 따르면, 글자가 "2 자 또는 3 자로 바뀌었다"는 이유로 16 비트 이상으로 올라가지 않을 것으로 보인다. –