gpt4 book ai didi

c# - 如何使用 WriteEndElement 检查元素名称

转载 作者:太空狗 更新时间:2023-10-29 20:39:48 25 4
gpt4 key购买 nike

我正在用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com