我使用xsd生成器工具从xml架构中获得了一个自动生成的c#类文件。
此课程中有一个属性需要重命名为" Balance"到"平衡"什么时候创建xml文件。
由于这是一个生成的类,我需要在seralizing之前动态更新创建的xml对象,因此只能在具有预期名称的class属性上添加atrribute。
我已经完成了通过使用XmlAttributes类来忽略某些属性的任务,所以我确定我可以在同一行中为此做什么
有人能指出我如何实现这个目标吗?
由于
答案 0 :(得分:1)
我设法通过使用以下方法解决了我的问题:
ffmpeg -i ../m.mp4 -f image2 m.mp4-%04d.bmp
MyGeneratedCustomType是一个出现在生成的xsd类中的类型,它保存了我需要重命名的属性。它是一个优雅的解决方案,因为所需的代码非常少。
答案 1 :(得分:0)
假设你需要像这样从XML反序列化:
<root>
<Balance />
</root>
然后像这样序列化为XML:
<root>
<balance />
</root>
这里有两个选项:
您可以创建第二个类,除了在镜像类的Balance属性上具有[XmlElement("balance")]
之外,它会以各种方式镜像自动生成的类。如果生成的类为XsdGenerated
且镜像类为CustomClass
,则创建构造函数或覆盖=
s运算符,以便能够使用来自的所有字段填充CustomClass
XsdGenerated
。序列化CustomClass
时,您应该得到所需的结果。我认为这是更好的选择。
在IXmlSerializable
上实施XsdGenerated
。在base()
方法中调用ReadXml
,然后让WriteXml
方法以小写形式创建balance
标记。请注意,此选项可能更难以编写/维护,并且会限制您序列化和反序列化的能力 - 它是单向操作,除非您创建了一个更复杂的机制来设置是否ReadXml()
和WriteXml()
应该使用大写或小写b来处理balance
。