Я пишу xml с XmlWriter. Мой код имеет много разделов, как это:Как проверить имя элемента с помощью WriteEndElement
xml.WriteStartElement("payload");
ThirdPartyLibrary.Serialise(results, xml);
xml.WriteEndElement(); // </payload>
Проблема заключается в том, что метод ThirdPartyLibrary.Serialise
является ненадежным. Это может произойти (в зависимости от переменной results
), что он не закрывает все теги, которые он открывает. Как следствие, моя строка WriteEndElement извращается, потребляет закрытие вешающих тегов библиотеки, вместо того, чтобы писать </payload>
.
Таким образом, я хотел бы сделать проверенный вызов WriteEndElement, который проверяет имя элемента и генерирует исключение, если курсор не находится в ожидаемом элементе.
xml.WriteEndElement("payload");
Вы можете думать об этом, как XmlReader.ReadStartElement(name)
, который бросает, если курсор не находится в ожидаемом месте в документе.
Как я могу это достичь?
Редактировать: Второй вариант использования этого метода расширения - сделать мой собственный код более читабельным и надежным.
Можете ли вы отправить новый 'XmlWriter' в' ThirdPartyLibrary.Serialise' и проверить его экспликацию, прежде чем добавлять его в свой объект 'xml'? – zimdanen
Можете ли вы как-то проверить «результаты» перед тем, как передать его в «Сериализация»? (т. е. вы можете воспроизвести разрыв метода сериализации при передаче определенных типов результатов) – keyboardP
@KeyboardP - сторонняя библиотека на самом деле является поставляемым пользователем плагином, реализующим интерфейс, поэтому ему не следует доверять. –