Col*_*nic 7 .net c# extension-methods xmlwriter
我正在用XmlWriter编写xml .我的代码有很多这样的部分:
xml.WriteStartElement("payload");
ThirdPartyLibrary.Serialise(results, xml);
xml.WriteEndElement(); // </payload>
Run Code Online (Sandbox Code Playgroud)
问题是该ThirdPartyLibrary.Serialise方法不可靠.它可能发生(取决于变量results)它不会关闭它打开的所有标签.结果,我的WriteEndElement行被变态,消耗了关闭库的悬挂标签,而不是写</payload>.
因此,我想对WriteEndElement进行一次检查,检查元素名称,并抛出异常,除非光标位于预期的元素.
xml.WriteEndElement("payload");
Run Code Online (Sandbox Code Playgroud)
XmlReader.ReadStartElement(name)除非光标位于文档中的预期位置,否则您可以将其视为抛出.
我怎样才能做到这一点?
编辑:此扩展方法的第二个用例是使我自己的代码更具可读性和可靠性.
最后,我编写了一个扩展方法WriteSubtree,提供了这个可用的 API:
using (var resultsXml = xml.WriteSubtree("Results"))
{
ThirdPartyLibrary.Serialise(results, resultsXml);
}
Run Code Online (Sandbox Code Playgroud)
扩展方法XmlWriter.WriteSubtree类似于 .NET 的XmlReader.ReadSubtree. 它返回一个特殊的 XmlWriter,用于检查有趣的事情。它的 dispose 方法会关闭所有打开的标签。
| 归档时间: |
|
| 查看次数: |
547 次 |
| 最近记录: |