2011-09-05 42 views
10

Scala có thư viện XML riêng và nó cung cấp hỗ trợ tích hợp cho nó. Tuy nhiên, một trong những tính năng chính của ngôn ngữ được chào hàng là khả năng tương thích với Java. Tôi hy vọng sẽ có thể sử dụng các đối tượng java Node theo cách tương tự như khi tôi sử dụng các đối tượng scala.Có cách nào nhanh chóng để chuyển đổi các đối tượng Java xml sang các đối tượng Scala xml không?

Câu hỏi của tôi là:

  • cách nhanh nhất để chuyển đổi container xml java cho những người scala là gì?
  • Có bất kỳ mối liên hệ tốt đẹp nào làm việc cho bạn không?
  • Có một nhà xây dựng nào có phần tử java, ví dụ, trong API Scala không?

Trả lời

1

Vì vậy, tôi đã đào xung quanh và điều này là tốt nhất tôi có thể tìm thấy: http://www.jdom.org/docs/apidocs/org/jdom/output/XMLOutputter.html

Cách dễ nhất để sử dụng này sẽ là một tiềm ẩn:

implicit def javaToScalaXML(jElem: org.jdom.Element): scala.xml.Element = { 
    return XML.loadstring(XMLOuputter.outputString(jElem)) 
} 

Đây không phải là rất đẹp cho các đối tượng xml thực sự lớn khi chúng được chuyển đổi thành String và sau đó quay lại đối tượng XML, nhưng nó hoạt động đối với các đối tượng vừa và nhỏ.

1

Mặc dù không chính xác cho Scala XML, có một giải pháp cho Scales Xml.

Nó cung cấp hỗ trợ TrAX đầy đủ và theo thuật toán JAXP bình thường 'Sun' (không phải tất cả các nhà cung cấp khác cho phép điều này), cho phép chuyển đổi sử dụng StAX. Điều đó có nghĩa là bạn có thể chuyển đổi giữa Scales Xml và JAXP (hoặc bất kỳ mô hình nào khác hỗ trợ TrAX) mà không cần serialize thành chuỗi đầu tiên.

Tuy nhiên, có rất nhiều cơ sở hạ tầng hiện có cho các đối tượng DOM thẳng không thực sự được hỗ trợ trực tiếp do tính bất biến của cả ba lựa chọn thay thế Scala Xml.

+0

Bạn làm như thế nào? Tôi vừa đăng một câu hỏi về chủ đề rất ở đây: http://stackoverflow.com/questions/19044333/how-to-convert-scala-scales-xml-to-dom-sax – underspecified

Các vấn đề liên quan