我正在写 xmlXmlWriter http://msdn.microsoft.com/en-gb/library/system.xml.xmlwriter.aspx。我的代码有很多这样的部分:
xml.WriteStartElement("payload");
ThirdPartyLibrary.Serialise(results, xml);
xml.WriteEndElement(); // </payload>
问题是ThirdPartyLibrary.Serialise
方法不可靠。它可能会发生(取决于变量results
)它不会关闭它打开的所有标签。因此,我的 WriteEndElement 行是变态的,消耗了关闭库的悬挂标签,而不是写入</payload>
.
因此,我想对 WriteEndElement 进行检查调用,以检查元素名称,并抛出异常,除非光标位于预期元素处。
xml.WriteEndElement("payload");
你可以这样想XmlReader.ReadStartElement(name)
除非光标位于文档中的预期位置,否则会抛出异常。
我怎样才能实现这个目标?
编辑:此扩展方法的第二个用例是使我自己的代码更具可读性和可靠性。
XMLWriter 只是将给定的 xml 信息写入流中,而不进行任何验证。如果在写入 xml 标记时进行任何验证,则在创建大 xml 文件时会出现性能问题。
使用 XMLWriter 创建 XML 文件需要由开发人员承担风险。如果您想要进行任何此类验证,可以使用 XMLDocument。
如果您确实想在 XMLWriter 中执行此验证,则必须使用 String 或 StringBuilder 创建编写器。因为,如果您使用 Stream 或 TextWriter,您将无法读取在写入过程中写入流的信息。在 XML 的每次更新中,您都必须读取字符串并编写自己的方法来验证写入的信息。
我建议您使用 XMLDocument 来创建这些类型的 xml。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)