2009-03-28 16 views
5

Để đọc XML, có SAX và DOM được tích hợp vào Java 1.5. Bạn có thể sử dụng JAXP và không cần biết chi tiết về trình phân tích cú pháp nào có sẵn ... Vì vậy, một số API được quy định cho một là ghi tài liệu XML trong Java 1.5 trở về trước là gì?Đọc và viết XML bằng JUST Java 1.5 (hoặc cũ hơn)

  • Tôi không muốn sử dụng một bên thứ ba nhị phân
  • Tôi không muốn thừa nhận một Sun VM hay IBM VM vv và sử dụng một số lớp chuyên
  • Dù có nghĩa là các văn bản tài liệu , Tôi muốn đọc một cách bổ sung.
  • Hiệu suất và phù hợp cho các tập tin XML lớn không phải là đặc biệt quan trọng

Lý tưởng nhất, một đọc và ghi không có thay đổi chỉ là một vài dòng mã.

+0

Bạn có cần kiểm soát lược đồ xml hay bất cứ điều gì được viết tốt miễn là nó là XML và có thể đọc được trong cùng một quá trình ngược lại? – TofuBeer

+0

Có, tôi quan tâm đến lược đồ. Bạn đang nghĩ về tuần tự hóa XML? –

Trả lời

5

Java 1.4 đi kèm với javax.xml.transform, có thể mất một DOMSource, SAXSource, vv:

// print document 
InputSource inputSource = new InputSource(stream); 
Source saxSource = new SAXSource(inputSource); 
Result result = new StreamResult(System.out); 
TransformerFactory transformerFactory = TransformerFactory 
    .newInstance(); 
Transformer transformer = transformerFactory 
    .newTransformer(); 
transformer.transform(saxSource, result); 

Nếu bạn muốn quay trở lại với J2SE 1.3 API, bạn khá nhiều trên của riêng bạn (mặc dù nếu bạn đang sử dụng API J2EE của thời đại đó, có thể có điều gì đó - tôi không nhớ).

+0

Đây chính xác là câu trả lời đúng cho câu hỏi tôi đã gõ. Nhưng trong vấn đề hindsight, câu hỏi là gây hiểu nhầm. Tôi muốn tạo ra một loạt nội dung mới; Tôi không chắc chắn cách tạo nội dung mới bằng Biến áp ... –

+0

Tôi sẽ bắt đầu một câu hỏi mới với ví dụ về dữ liệu đầu vào và đầu ra bạn muốn tạo ra từ đó. – McDowell

+0

Ngoài ra, cách sử dụng Biến áp: http://java.sun.com/webservices/reference/tutorials/jaxp/html/xslt.html Mặc dù, không rõ liệu bạn có cần tất cả điều đó hay không. – McDowell

0

Không có chính thức "quy định" API, nhưng chúng tôi đã rất hài lòng với các kỹ thuật sau:

Tạo một lớp XmlWriter mà khởi với một nhân vật Writer và có phương pháp như startElement(String name), writeAttribute(String name, String value), và writeCData(String text).

Sau đó, triển khai theo cách hiển nhiên. Các phương thức nội bộ có thể làm những việc như thoát khỏi ký tự SGML; xem Apache Commons cho các tiện ích sẽ giúp ích.

Nếu bạn muốn đầu ra dễ đọc hơn, bạn có thể làm những việc như cấp độ phần tử theo dõi và thêm dòng mới và các tab hoặc dấu cách. Ngoài ra tùy chọn là theo dõi những thứ như một phần tử đang được mở và đóng mà không có bất kỳ thứ gì bên trong có thể được viết tắt là <element/>.