Pet*_*pov 2 c# xml xml-serialization xmltextwriter xmlserializer
我的客户遇到一个奇怪的问题-我正在读取XML文档(实际上是InfoPath文档)XmlSerializer,进行修改,然后使用编写XML文档XmlSerializer,然后使用来添加一些处理指令XmlTextWriter。一切运行良好,并且生成的文档实际上完全符合XML,并且可以由InfoPath读取。但是,结构发生的变化是原始文档中所有空标签都以表格形式写入<A></A>,而在编写文档时,该文档变为<A/>。由于XML标准,实际上完全相同。但是,我的客户(一家大公司)显然具有一些带有hardcoded的检查/验证脚本<A></A>,但是它们失败了。他现在很沮丧,并且懒得更改脚本,并且想要这种<A></A>符号!我该如何设定XmlTextWriter 去做吧?
您可以通过提供XmlSerializer自己的XmlWriter后代来实现,这将覆盖WriteEndElementmethod。默认情况下,此方法根据要输出的元素的内容生成一个空元素(<a />)或一个结束元素(</a>)。您可以更改行为以始终产生完整的结束元素。
public class MyXmlWriter : XmlTextWriter
{
// …constructors etc. omitted for the sake of simplicity…
public override void WriteEndElement()
{
// this should do the trick
WriteFullEndElement();
}
}
Run Code Online (Sandbox Code Playgroud)
但是,还需要做更多的工作,例如Async此方法的版本,但原则上,应该像上面一样容易实现。我建议你寻找到的源代码的XmlTextWriter.WriteEndElement,并得出一个版本最适合您的情况。