2010-12-27 18 views
6

Tôi đang viết một tệp xml bằng cách sử dụng api xmlwriter của libxml2.xent indentation

khi tôi mở tệp bằng notepad, thụt đầu dòng không đúng.

có ai biết cách khắc phục không?

cảm ơn rất nhiều.

Trả lời

9

Tôi đang đi trên một chút của một chi ở đây, nhưng tôi sẽ nói rằng bởi "thụt đầu dòng là không đúng" bạn có nghĩa là nó không thụt vào ở tất cả.

libxml2, theo mặc định, sẽ không thụt lề tệp XML của bạn, bởi vì trong XML, khoảng trắng (bao gồm cả được sử dụng cho thụt đầu dòng) là dữ liệu quan trọng. Đó là, này tập tin XML:

<root> 
    <foo>Bar</foo> 
</root> 

là ngữ nghĩa khác nhau từ:

<root><foo>Bar</foo></root> 

... trong đó hai mảnh dữ liệu ký tự từ tập tin XML đầu tiên có thể có ý nghĩa đối với bạn, các lập trình viên, vì vậy, XML để chúng ở đó khi đọc tệp và sẽ không xuất chúng (trừ khi được hướng dẫn) khi viết.

Điều đó nói rằng, đây là một bit không bị lạm dụng XML. Hầu hết XML tôi đã thấy là, thật đáng buồn, thụt vào. libxml2 có các tùy chọn để tự động xuất thụt đầu dòng khi viết, và loại bỏ nó khi đọc, nhưng lưu ý: có một số cảnh báo cho điều này: nó có thể làm cho nó sai. Các tài liệu nói nhiều hơn.

Tôi nghĩ rằng chức năng này có thể giúp bạn (Tôi chưa bao giờ thực sự sử dụng này bản thân mình :-)), nếu bạn muốn nó thụt cho bạn: xmlTextWriterSetIndent

chú ý đến cảnh báo ở đây: libxml2 FAQ

Và thông tin ở đây: XML Specification

+0

Quyền của bạn, tôi có nghĩa là libxml2 ghi dữ liệu mà không cần thụt lề. –

+0

khi tôi sử dụng hàm xmlTextWriterSetIndent nó thêm dấu cách sau mỗi thẻ nhưng không thêm dòng mới. làm cho tập tin trông lạ ở notepad. –

+1

Tôi sẽ mạo hiểm để đoán nó chỉ là thêm một '\ n', và bạn (hoặc nó) có tập tin mở ở chế độ nhị phân. Không sử dụng Notepad - nó có thể là trình soạn thảo văn bản tồi tệ nhất trên hành tinh. Notepad ++ làm cho một khởi đầu tốt, và nếu tập tin của bạn chỉ sử dụng '\ n' cho dòng kết thúc (điển hình của các tập tin Unix), Notepad ++ sẽ có thể mở nó. – Thanatos

-1

tôi tin rằng bạn muốn thụt lề chỉ để bạn có thể đọc tệp xml ... trong trường hợp đó, bây giờ bạn có thể sử dụng google chrome để xem xml và nó sẽ được hiển thị đã thụt lề (nhớ là không phải là một ý tưởng hay để thụt lề một tệp xml với libxml2).

+0

Bạn có thể vui lòng cho chúng tôi biết tại sao không phải là ý tưởng hay để thụt lề với libxml2? – Josejulio

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