XmlWriterでxmlを書いています。私のコードは次のようにセクションがたくさんあります。WriteEndElementで要素の名前を確認する方法
xml.WriteStartElement("payload");
ThirdPartyLibrary.Serialise(results, xml);
xml.WriteEndElement(); // </payload>
問題はThirdPartyLibrary.Serialise
方法の信頼性が低いということです。開いたタグをすべて閉じることはできません(変数results
による)。結果として、私のWriteEndElement行は、逆転し、</payload>
と書くのではなく、ライブラリのハンギングタグを閉じるのに費やされました。
このように、要素名をチェックし、カーソルが期待される要素にない限り、例外をスローするWriteEndElementを呼び出すようにしたいと思います。
xml.WriteEndElement("payload");
は、カーソルが文書内の予想される場所である場合を除き投げるこのようなXmlReader.ReadStartElement(name)
と考えることができます。
どうすればこの問題を解決できますか?
編集:この拡張メソッドの2番目の使用例は、自分のコードをより読みやすく信頼できるものにすることです。
新しい 'XmlWriter'を 'ThirdPartyLibrary.Serialise'に送り、それを' xml'オブジェクトに追加する前にその明示性をチェックできますか? – zimdanen
''結果 'を' Serialise'に渡す前に何とか検証できますか? (つまり、特定のタイプの結果を渡すときにserialiseメソッドの中断を再現することができます) – keyboardP
@KeyboardP - サードパーティのライブラリは、実際にはインターフェイスを実装するユーザー提供のプラグインなので、信頼できません。 –