Tôi đang viết xml với XmlWriter. Mã của tôi có nhiều mục như sau:Cách kiểm tra tên của phần tử với WriteEndElement
xml.WriteStartElement("payload");
ThirdPartyLibrary.Serialise(results, xml);
xml.WriteEndElement(); // </payload>
Vấn đề là phương pháp ThirdPartyLibrary.Serialise
không đáng tin cậy. Nó có thể xảy ra (tùy thuộc vào biến số results
) mà nó không đóng tất cả các thẻ nó mở ra. Kết quả là, dòng WriteEndElement của tôi bị hỏng, tiêu thụ đóng các thẻ treo của thư viện, thay vì viết </payload>
.
Vì vậy, tôi muốn thực hiện cuộc gọi đã kiểm tra để WriteEndElement kiểm tra tên phần tử và ném ngoại lệ trừ khi con trỏ ở phần tử mong đợi.
xml.WriteEndElement("payload");
Bạn có thể nghĩ điều này giống như XmlReader.ReadStartElement(name)
sẽ ném trừ khi con trỏ ở vị trí mong muốn trong tài liệu.
Tôi làm cách nào để đạt được điều này?
Chỉnh sửa: Trường hợp sử dụng thứ hai cho phương pháp này sẽ làm cho mã của riêng tôi dễ đọc và đáng tin cậy hơn.
Bạn có thể gửi một 'XmlWriter' mới vào' ThirdPartyLibrary.Serialise' và kiểm tra xem nó có dễ hiểu không trước khi thêm nó vào đối tượng 'xml' của bạn? – zimdanen
Bạn có thể xác thực 'kết quả' bằng cách nào đó trước khi chuyển nó tới' Serialise' không? (ví dụ: bạn có thể repro phá vỡ phương pháp nối tiếp khi bạn chuyển vào một số loại kết quả nhất định) – keyboardP
@KeyboardP - thư viện của bên thứ ba thực sự là trình cắm thêm do người dùng cung cấp triển khai giao diện, vì vậy nó không đáng tin cậy. –