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

C#对象到XML共享

时间:2023-04-10 14:45:57 C#

C#对象到XML我正在创建一个需要将C#对象转换为XML的应用程序。我正在使用XMLSerializer类来实现此目的。这是代码片段:publicclassAnwer{publicintID{get;放;}公共字符串XML{得到;放;}publicAnwer(intID,stringXML){this.ID=ID;这个.XML=XML;}publicAnswer(){}}这是主要函数:stringAnswerXML=@"1";清单answerList=newList();answerList.Add(新答案(1,AnswerXML));AnswerXML=@"2";答案列表。添加(新答案(2,AnswerXML));XmlSerializerx=newXmlSerializer(answerList.GetType());x.Serialize(Console.Out,answerList);输出为:1122在上面的代码中,"被替换为'<'和'>';如何避免这种情况?我知道字符串替换是其中之一方式,但我不想使用它。提前致谢。你基本上不需要。这会正确序列化对象-XML序列化程序不希望XML在字符串中进行处理,因此它会适当地转义XML。如果稍后反序列化XML,将返回原始对象数据。如果您尝试定义方式构建XML文档,我建议您不要使用XML序列化。如果您乐于显式创建元素等,或者如果您真的想要直接在输出中包含任意字符串,请使用LINQtoXML,使用XmlWriter。如果您可以向我们提供更多关于您正在尝试做的事情的大局信息,我们可能会建议更好的替代方案——直接构建XML字符串并不是一个好主意。XmlSerializer不会相信你的元素是xml,除非你说服它,例如通过将该属性公开为XmlDocument。否则,它(正确地,IMO)总是编码这样的值。例如:使用系统;使用System.Xml;使用System.Xml.Serialization;publicclassAnwer{publicintID{get;放;}公共XmlDocumentXML{得到;放;}publicAnwer(intID,stringXML){this.ID=ID;XmlDocumentdoc=newXmlDocument();doc.LoadXml(XML);this.XML=文档;}publicAnswer(){}}staticclassProgram{staticvoidMain(){varanswer=newAnswer(123,"2");varser=newXmlSerializer(answer.GetType());ser.Serialize(Console.Out,answer);我正在创建一个需要将c#对象转换为XML的应用程序。我正在使用XMLSerializer类来完成这项工作如果您正在使用XMLSerializer来完成这项工作,为什么要在“XML”字段中插入手工编码的XML?看起来你想要更像这样的东西(使用你的类名,虽然它看起来像错字):publicclassAnwer{publicintID{get;放;}publicintAnswer{得到;放;}}。.ListanswerList=newList(){newAnswer{ID=1,Answer=2},newAnswer{ID=2,Answer=3},};XmlSerializerx=newXmlSerializer(answerList.GetType());X。序列化(Console.Out,answerList);..12...或者,如果您真的想要/需要将Answer元素嵌套在XML元素中,无论出于何种原因,您都可以更改Answer对象以反映该结构(如OlegKalenchuk所建议的那样),或者生成自己编写XML而不是使用序列化程序:XElementxml=newXElement("AnwerList",fromanwerinanwerListselectnewXElement("Anwer",newXElement("ID",anwer.ID),newXElement("XML",newXElement("答案",answer.Answer))));Console.Out.WriteLine(xml);12...无论如何,我更喜欢后者,因为它可以让你获得更多的控制权。您正在将包含符号的字符串分配给XML元素,因此很明显序列化程序会将其替换为实体引用。即使您在反序列化XML时得到>文本,您也会得到>文本。创建一个带有整数“Answer”成员的新类AnswerXML将XML成员的类型从字符串改为AnswerXML因为''是用于xml结构本身的字符,所以它们会自动进行html编码。当您在应用程序中读取并反序列化时,“<”和“>”应转换回“”。如果您的目标不是,请使用htmldecode函数。如果这没有帮助,只需告诉您要对xml数据做什么。以上就是C#学习教程:C#对象是XML共享的所有内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处: