我正在使用System.Xml在C#中创建 XML文档 我的问题希望是一个简单的问题,我是否需要使用WriteEndElement来关闭XML标记? 例如,我发现以下代码将使用或不使用’writer.WriteEndElement();’进行编译
我的问题希望是一个简单的问题,我是否需要使用WriteEndElement来关闭XML标记?
例如,我发现以下代码将使用或不使用’writer.WriteEndElement();’进行编译并以任何方式生成相同的XML,但是如果我把’writer.WriteEndElement();’两次,该程序抛出异常.
writer.WriteStartElement("CustomerNo"); writer.WriteString("12345"); writer.WriteEndElement();
我不是懒惰,不介意把它放在它需要的地方,如果它应该是这样的,我只需要一些指导.
谢谢
约翰
一般来说:是的,对于每个WriteStartElement(),必须有匹配的WriteEndElement().将包含层次结构视为堆栈 – Starts(“推送”)和Ends(“pops”)必须平衡.如果你试图“弹出”超出结束,那就是失败,抛出异常,就像你描述的那样.
例如,要在A元素中写入B元素:
WriteStartElement("A"); WriteStartElement("B"); // ... attributes or content added here will become part af B element WriteEndElement(); // Closes the open B element. WriteEndElement(); // Closes the open A element.
更新:正如@Sam在另一个答案中指出的那样 – 当你给出的例子中 – 你只想写出简单的内容元素(没有属性或子元素)时,你可能想看一下方便法WriteElementString( ),自动将内容包装在开始/结束标记中.
希望这可以帮助.