2010-03-06 2 views
6

Tôi chắc chắn nó phải rõ ràng, nhưng tôi có thể tìm thấy bất kỳ tài liệu tham khảo về câu hỏi của tôi. Scala XML sử dụng công nghệ cơ bản nào? Có cái gì đó giống như DOM hoặc SAX giống hoặc StAX như thế nào? Tôi nên biết những hình phạt về hiệu suất khi xử lý các tài liệu lớn? StAX có hiệu quả hơn không?Hỗ trợ Scala XML hoạt động như thế nào?

Xin cảm ơn trước.

Trả lời

7

Tài liệu lớn (vài trăm MB) có thể được xử lý với scala.xml.pull.XMLEventReader. Xem nightly scaladoc (giả sử bạn sẽ sử dụng 2.8). Điều này đang sử dụng một mô hình phân tích cú pháp kéo như StAX.

Nói chung so với Java, Scala đang làm việc riêng của mình khi giao dịch với XML. XML là bất biến. Ngoài ra, bạn có thể sử dụng các chữ cái XML trực tiếp trong mã Scala của bạn có xu hướng làm cho mã dễ đọc hơn.

Để trả lời nhận xét, XML.load sử dụng javax.xml.parsers. {SAXParser, SAXParserFactory} làm công nghệ cơ bản. Tôi cũng giả định rằng xml kết quả được nạp vào bộ nhớ.

+0

Cảm ơn bạn. Tôi quên đề cập đến câu hỏi của tôi chỉ được phân tích cú pháp (phương thức 'XML.load()', chính xác và tương ứng với 'NodeSeq') - tôi cho rằng toàn bộ tài liệu được nạp và phân tích nếu tôi sử dụng API? – incarnate

+0

Cảm ơn một lần nữa, bổ sung của bạn là một câu trả lời tôi đang tìm kiếm. – incarnate

2

Scala thực hiện việc riêng của mình. Hầu hết các mô hình XML có thể thay đổi và không dịch tốt sang bất biến (vì chúng theo dõi phụ huynh, chủ yếu).

Here's một bài báo về nó.