2011-02-03 26 views
5

Tôi có định dạng XML tốt mà không có bất kỳ dấu cách nào. Nó phải như thế.Làm thế nào để XMLDocument không đặt dấu cách trên các thẻ tự đóng?

Khi tôi tải nó để XMLDocument ký, các thẻ tự đóng được một khoảng trắng thêm và

<cEAN/> 

trở thành:

 <cEAN /> 

Khi văn bản này phải có chữ ký, nó không thể loại bỏ khoảng trắng.

Thuộc tính PreserveWhiteSpace không tạo ra bất kỳ sự khác biệt nào đối với kết quả.

Làm cách nào để thay đổi hành vi này?

+3

Tôi rất tò mò. Cái gì tiêu thụ XML sao cho nó không thể đối phó với không gian? – spender

+0

Đó là sự hiểu biết của tôi rằng không gian trước khi forwardslash được quyết định theo tiêu chuẩn. –

+0

@Bradley: không. Tôi không tin tiêu chuẩn ra lệnh định dạng tuần tự hóa ở mức độ đó. –

Trả lời

3

Không có khoảng trống trước khi đóng "/" trong XmlDocument. XmlDocument là cấu trúc dữ liệu bao gồm các nút. Nó là nhị phân. Nó không phải là văn bản.

Bất kỳ khoảng trống bổ sung nào bạn chỉ nhìn thấy đều tồn tại khi bạn tuần tự hóa tài liệu dưới dạng văn bản.

Bạn có thực sự gặp sự cố khi ký hoặc bạn chỉ cho rằng mình sẽ có vấn đề như vậy không?

+0

Bạn đúng về việc sắp xếp theo thứ tự. Và tôi đang gặp vấn đề với một Cơ quan Chính phủ, người đã giải phóng thêm không gian cần xóa. –

+4

Yêu cầu học sinh học XML. Nhắc họ là tiêu chuẩn quốc tế. –

+0

trong khi tôi đồng ý, chúc may mắn cho OP với người đó! – spender

0

Tôi đã gặp sự cố này trước đây. XML được ký bởi một Hash cơ bản để nó không thể thay đổi khi được tuần tự hóa. Tôi giải quyết nó bằng cách viết một serializer để tôi có thể chắc chắn rằng nó sẽ xuất ra đúng XML.

Công thức cơ bản là Đọc XML với số XMLReader và viết ra từng đoạn như khi nó xuất hiện.

0

Hãy thử cách này:

XMLTài liệu doc;

...

string XMLstring = doc.OuterXml.Replace ("/>", "/>");

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