gpt4 book ai didi

C# System.Xml.Serialization - 仅使用 而从不使用

转载 作者:数据小太阳 更新时间:2023-10-29 02:55:42 24 4
gpt4 key购买 nike

我的客户遇到了一个奇怪的问题 - 我正在阅读带有 XmlSerializer 的 XML 文档(实际上是一个 InfoPath 文档) ,修改它,然后使用 XmlSerializer 写出一个 XML 文档, 然后使用 XmlTextWriter 添加一些处理指令.一切正常,生成的文档实际上完全符合 XML,可以被 InfoPath 读取。然而,结构中发生的一个变化是原始文档的所有空标签都以 <A></A> 的形式编写。 ,当我的文档被写入时,它变成了 <A/> .由于 XML 标准,实际上完全相同。但是,我的客户(一家大公司)显然有一些硬编码的检查/验证脚本 <A></A> ,他们失败了。他现在心烦意乱,懒得改剧本,想要<A></A>符号!如何设置 XmlTextWriter去做吧?

最佳答案

您可以通过提供 XmlSerializer 来做到这一点用你自己的XmlWriter后代,这将覆盖 WriteEndElement method .默认情况下,此方法根据正在输出的元素的内容生成一个空元素 ( <a /> ) 或一个结束元素 ( </a> )。您可以更改行为以始终生成完整的结束元素。

public class MyXmlWriter : XmlTextWriter
{
// …constructors etc. omitted for the sake of simplicity…

public override void WriteEndElement()
{
// this should do the trick
WriteFullEndElement();
}
}

但是,还需要做更多的工作,例如Async此方法的版本,但原则上应该很容易像上面那样实现。我建议查看 the source codeXmlTextWriter.WriteEndElement并派生出更适合您情况的版本。

关于C# System.Xml.Serialization - 仅使用 <a></a> 而从不使用 <a/>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54999461/

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