- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在用 XmlWriter 编写 xml .我的代码有很多这样的部分:
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。
关于c# - 如何使用 WriteEndElement 检查元素名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15813284/
我正在用 XmlWriter 编写 xml .我的代码有很多这样的部分: xml.WriteStartElement("payload"); ThirdPartyLibrary.Serialise(r
我正在使用 System.Xml 在 C# 中创建 XML 文档 我的问题希望是一个简单的问题,我是否需要使用 WriteEndElement 来关闭 XML 标记? 例如,我发现无论是否使用“wri
本文整理了Java中net.sf.okapi.common.XMLWriter.writeEndElement()方法的一些代码示例,展示了XMLWriter.writeEndElement()的具体
我正在使用不导入缩写的空 xml 元素的遗留应用程序。例如: 坏空: 好空: 我知道实现此目标的解决方案,现在我将介绍: public class XmlTextWriterFull : XmlT
我是一名优秀的程序员,十分优秀!