2010-04-02 42 views
5

Tôi đang tạo một tài liệu XML. Tôi đã nhận được nó để thụt lề bằng cách sử dụng TransformerFactory.setAttribute("indent-number", new Integer(2)); Transformer.setOutputProperty(OutputKeys.INDENT, "yes");Nhận Java để sử dụng các tab thay vì dấu cách để thụt lề

Có thể để Java sử dụng các tab thay vì dấu cách để thụt lề không? Và làm thế nào?

+0

Sự khác biệt nào khi tạo các tab thay vì khoảng trắng? Trình chỉnh sửa của bạn thích tab tốt hơn? –

+0

transformer.setOutputProperty ("{http://xml.apache.org/xslt}indent-amount", "4"); đã làm các trick cho tôi. Nó có lẽ không đảm bảo, và trên thực tế nó có vẻ phụ thuộc nhiều vào phiên bản java bạn đang sử dụng. Các tab cá nhân so với không gian có nghĩa là không có gì khi nó chỉ có nghĩa là một tệp dữ liệu. –

Trả lời

2

Không, không phải nói chung. Đặc tả XSLT không cho phép chỉ định khoảng trống WHAT để sử dụng khi thụt lề.

Tuy nhiên, đó có thể là mục cụ thể của bộ xử lý XSLT để định cấu hình. Kiểm tra tài liệu bạn đang sử dụng.

Nếu bạn thực sự muốn điều này, thì bạn có thể sử dụng tập lệnh XSLT sau khi ghi trên đầu ra mà bạn muốn làm gì trên các nút văn bản().

0

Tôi nghĩ là không.

Bạn có thể nhận kết quả và xử lý nó, thay thế gọi số str.replace("\n ", "\n\t") (hoặc bất kỳ số lượng không gian nào bạn muốn).

Nhưng tôi khuyên bạn nên chống lại điều đó - các tab không độc lập với nền tảng.

+2

@Bozho, có thể nguy hiểm khi thực hiện cuộc gọi 'str.replace' vì nó có thể sẽ thay thế một số giá trị thuộc tính v.v ... thành tab từ không gian; rất không mong muốn phải không? –

+0

bạn nói đúng - tôi đã thêm bản cập nhật bằng cách thêm một dòng mới. – Bozho

1

Có, các tab được coi là xấu bởi một số ít. Tuy nhiên, nếu bạn muốn sử dụng TransformFactory và muốn thay đổi hành vi thụt lề để sử dụng các tab thay vì dấu cách, bạn cần cung cấp triển khai của riêng mình ContentHandler. Sau đó, vượt qua việc triển khai ContentHandler của bạn thành một SAXResult mới - chuyển đó thành "kết quả" cho Transformer.transform(...). Rất nhiều hoops để nhảy qua. Một xem xét khác có thể là sử dụng XSLT thông minh trên đầu ra của bạn.

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