2010-03-06 4 views
6

분명해야하지만, 나는 내 질문에 대한 참조를 찾을 수 있습니다. 스칼라 XML이 사용하는 기본 기술은 무엇입니까? DOM과 같은 것입니까, SAX와 같은 것입니까 StAX입니까? 대용량 문서를 처리 할 때 어떤 성능상의 불이익을 인식해야합니까? StAX가 여전히 더 효율적입니까?스칼라 XML 지원은 어떻게 작동합니까?

미리 감사드립니다.

답변

7

큰 문서 (수백 MB)는 scala.xml.pull.XMLEventReader으로 처리 할 수 ​​있습니다. nightly scaladoc (2.8을 사용한다고 가정)을 참조하십시오. 이것은 StAX와 같은 pull 파서 모델을 사용하고 있습니다.

일반적으로 Java와 비교할 때 Scala는 XML을 처리 할 때 자체 작업을 수행합니다. XML은 변경할 수 없습니다. 또한 스칼라 코드에서 XML 리터럴을 직접 사용할 수 있으므로 코드를보다 쉽게 ​​읽을 수 있습니다.

에 대한 응답으로 XML.load은 javax.xml.parsers. {SAXParser, SAXParserFactory}를 기본 기술로 사용합니다. 또한 결과 XML이 메모리에로드되었다고 가정합니다.

+0

감사합니다. 내 질문은 구문 분석 (XML.load() 메서드, 정확하게, 해당 NodeSeq 물건) 간주됩니다 잊어 버린 - 나는 전체 문서로드 및이 사용하는 경우 구문 분석을 가정합니다 API? – incarnate

+0

다시 한 번 감사드립니다. – incarnate

2

스칼라는 자체적으로 일을합니다. 밖에있는 대부분의 XML 모델은 변경 가능하며 변경 불가능합니다 (대부분 부모를 추적하기 때문에).

Here's 그것에 관한 논문.

관련 문제