Sto scrivendo xml con XmlWriter. Il mio codice ha un sacco di sezioni in questo modo:Come verificare il nome dell'elemento con WriteEndElement
xml.WriteStartElement("payload");
ThirdPartyLibrary.Serialise(results, xml);
xml.WriteEndElement(); // </payload>
Il problema è che il metodo ThirdPartyLibrary.Serialise
è inaffidabile. Può accadere (a seconda della variabile results
) che non chiuda tutti i tag che apre. Di conseguenza, la mia riga WriteEndElement è pervertita, consumata chiudendo i tag sospesi della libreria, invece di scrivere </payload>
.
Pertanto, desidero effettuare una chiamata verificata a WriteEndElement che controlla il nome dell'elemento e genera un'eccezione a meno che il cursore non si trovi nell'elemento previsto.
xml.WriteEndElement("payload");
Si può pensare a questo come XmlReader.ReadStartElement(name)
che getta a meno che il cursore si trova nel luogo previsto nel documento.
Come posso ottenere questo risultato?
Modifica: un secondo caso d'uso per questo metodo di estensione sarebbe rendere il mio codice più leggibile e affidabile.
È possibile inviare un nuovo 'XmlWriter' a' ThirdPartyLibrary.Serialise' e controllare che sia esplicito prima di aggiungerlo all'oggetto 'xml'? – zimdanen
Puoi validare 'results' in qualche modo prima di passarlo a' Serialise'? (Puoi riproffare la rottura del metodo serialise quando passi in certi tipi di risultati) – keyboardP
@KeyboardP - la libreria di terze parti è in realtà un plug-in fornito dall'utente che implementa un'interfaccia, quindi non è affidabile. –