当前位置: 首页 > 编程语言 > C#

反序列化时如何获取XML节点值作为字符串分享

时间:2023-04-10 18:07:06 C#

反序列化时如何获取XML节点值作为字符串名称空间前缀cfdi:value在包含节点中定义:为了反序列化,我创建了Comprobante类:publicclassComprobante:IValidatableObject{[Required][XmlArray("Conceptos"),XmlArrayItem(typeof(Concepto),ElementName="Concepto")]publicListConceptos{get;放;}public附录附录{get;放;一切都映射到类属性,但Adenda节点可以接收任何东西——任意数量的有效XML节点——所以我没有类定义。即,Addenda节点可能包含n个我不知道的节点,信息在接收端进行验证。例如,一个客户可能会要求添加一个带有采购订单号的节点,而另一个客户可能会要求提供买方的姓名。etc.如果我需要所有Addenda节点内容作为字符串,我应该如何在类中声明它?您可以使用XmlSerializer通过使用[XmlAnyElement]标记目标属性来反序列化任意自由格式的XML数据。例如,您可以按如下方式定义附录类型:[XmlRoot("Comprobante",Namespace="http://cfdi")]publicclassComprobante:IValidatableObject{[Required][XmlArray("Conceptos"),XmlArrayItem(typeof(Concepto),ElementName="Concepto")]publicListConceptos{get;放;}公共附录附录{get;放;}}publicclass附录{[XmlAnyElement][XmlText]publicXmlNode[]Nodes{get;放;示例工作.NetFiddle#1。或者,您可以完全消除Adenda类型并将其替换为包含类型中的XmlElement属性:[XmlRoot("Comprobante",Namespace="http://cfdi")]publicclassComprobante:IValidatableObject{[Required][XmlArray("Conceptos"),XmlArrayItem(typeof(Concepto),ElementName="Concepto")]publicListConceptos{get;放;}[XmlAnyElement("Addenda")]publicXmlElementAddenda{get;放;示例作品。网络小提琴#2。注:以上为C#学习教程:反序列化时如何将XML节点值作为字符串获取所有共享内容。如果对你有用,需要了解更多C#学习教程,希望大家多加关注——本文来自网络收藏,不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处: