Tag: xml

如果返回类型可能是Error或Success对象,如何反序列化XML

我正在使用基于XML的API,因为它的根节点可以返回SuccessResponse或ErrorResponse 。 我使用下面的方法来反序列化数据,但我不知道如何处理返回不是SuccessResponse 。 处理返回的XML不是预期格式的情况的最佳方法是什么? 我知道我可以做一个黑客的方式,并寻找SuccessResponse或ErrorResponse但感觉不对。 TheIconicApiResult result = this.apiService.SendGetRequest(“GetProducts”, new List() { new FilterParam(“live”), new LimitParam(5000) }); IXmlSerialiser xmlSerialiser = new XmlSerialiser(); var xmlBody = xmlSerialiser.ParseXML(result.ResponseBody); public TObject ParseXML(string xml) { using (TextReader reader = new StreamReader(GetMemoryStream(xml))) { XmlSerializer serialiser = new XmlSerializer(typeof(TObject)); return (TObject)serialiser.Deserialize(reader); } }

C#中的Xml比较

我正在尝试使用C#代码比较两个Xml文件。 我想忽略Xml语法差异(即前缀名称)。 为此,我使用的是Microsoft的XML Diff和Patch C#API。 它适用于某些Xml,但我找不到配置它来使用以下两个Xml的方法: XML A: 1 XML B: 1 我的问题是: 我是对的,这两个xml在语义上是相等的(或同构的)? 可以配置Microsoft的XML Diff和Patch API来支持它吗? 还有其他C#实用程序吗?

如何在使用XmlSerializer时将注释写入XML文件?

我有一个对象Foo,我将其序列化为XML流。 public class Foo { // The application version, NOT the file version! public string Version {get;set;} public string Name {get;set;} } Foo foo = new Foo { Version = “1.0”, Name = “Bar” }; XmlSerializer xmlSerializer = new XmlSerializer(foo.GetType()); 这可以快速,轻松地完成当前所需的一切。 我遇到的问题是我需要维护一个单独的文档文件,其中包含一些小的评论。 如上例所示, Name很明显,但Version是应用程序版本,而不是数据文件版本,正如人们在这种情况下所期望的那样。 而且我还有许多类似的小事我想用评论来澄清。 我知道如果我使用WriteComment()函数手动创建我的XML文件,我可以这样做,但是我可以实现一个可能的属性或替代语法,以便我可以继续使用序列化器function吗?

使用字符串连接构建XML有什么坏处?

在线程什么是你最喜欢的“程序员无知”宠儿? ,出现以下答案,有大量的赞成票: Programmers who build XML using string concatenation. 我的问题是,为什么通过字符串连接构建XML(例如C#中的StringBuilder )不好? 我过去曾多次这样做过,因为对于我正在使用的数据结构/对象来说,它有时是从A点到B点的最快捷方式。 到目前为止,我提出了一些原因,为什么这不是最好的方法,但有什么我忽略的? 为什么要避免这种情况? 可能我能想到的最大原因是你需要手动转义字符串,大多数新程序员(甚至是一些有经验的程序员)都会忘记这一点。 它们在测试时对它们很有用,但是当有人在某个地方输入一个&符号时,“随机”他们的应用程序将会失败。 好的,我会买这个,但是很容易防止这个问题( SecurityElement.Escape命名一个)。 当我这样做时,我通常省略XML声明(即 )。 这有害吗? 绩效惩罚? 如果坚持使用正确的字符串连接(即StringBuilder ),这是否需要关注? 据推测,像XmlWriter这样的类也需要做一些字符串操作…… 有更优雅的生成XML的方法,例如使用XmlSerializer自动序列化/反序列化类。 好的,我同意。 C#有很多有用的类,但有时我不想为一些非常快速的类创建类,比如写出日志文件或其他东西。 这只是我懒惰吗? 如果我正在做一些“真实”的事情,这是我处理w / XML的首选方法。

Google Weather API 403错误

我决定从Google的Weather API中提取信息 – 我在下面使用的代码工作正常。 XmlDocument widge = new XmlDocument(); widge.Load(“https://www.google.com/ig/api?weather=Brisbane/dET7zIp38kGFSFJeOpWUZS3-“); var weathlist = widge.GetElementsByTagName(“current_conditions”); foreach (XmlNode node in weathlist) { City.Text = (“Brisbane”); CurCond.Text = (node.SelectSingleNode(“condition”).Attributes[“data”].Value); Wimage.ImageUrl = (“http://www.google.com/” + node.SelectSingleNode(“icon”).Attributes[“data”].Value); Temp.Text = (node.SelectSingleNode(“temp_c”).Attributes[“data”].Value + “°C”); } } 正如我所说,我能够从XML文件中提取所需的数据并显示它,但是如果刷新页面或当前会话仍处于活动状态,我会收到以下错误: WebException未被用户代码处理 – 远程服务器返回错误:403 Forbidden Exception。 我想知道这是否与访问该特定XML文件的某种访问限制有关? 进一步研究和改编建议 如下所述,这绝不是最佳实践,但我已经包含了我现在用于例外的捕获。 我在Page_Load上运行此代码,所以我只是回到页面。 从那以后我没有发现任何问题。 性能方面我并不过分担心 – 我没有注意到任何负载时间的增加,这个解决方案是暂时的,因为这一切都是出于测试目的。 我还在使用Yahoo的Weather API。 try […]

修改C#中的XML现有内容

目的:我计划使用XmlTextWriter创建XML文件,并使用XmlNode SelectSingleNode(),node.ChildNode [?]修改/更新一些现有内容.InnerText = someting等。 用XmlTextWriter创建XML文件后,如下所示。 XmlTextWriter textWriter = new XmlTextWriter(“D:\\learning\\cs\\myTest.xml”, System.Text.Encoding.UTF8); 我练习下面的代码。 但未能保存我的XML文件。 XmlDocument doc = new XmlDocument(); doc.Load(“D:\\learning\\cs\\myTest.xml”); XmlNode root = doc.DocumentElement; XmlNode myNode; myNode= root.SelectSingleNode(“descendant::books”); …. textWriter.Close(); doc.Save(“D:\\learning\\cs\\myTest.xml”); 我发现按照我的方式生产是不好的。 有什么建议吗? 我不清楚同一个项目中XmlTextWriter和XmlNode的概念和用法。 感谢您阅读和回复。

XmlTextReader与XDocument

我能够在.NET中解析XML。 现在我可以选择至少XmlTextReader和XDocument 。 这两个(或框架中包含的任何其他XML解析器)之间是否有任何比较? 也许这可以帮助我做出决定而不必深入尝试它们。 与易于使用相比,XML文件预计相当小,速度和内存使用是一个小问题。 🙂 (我将从C#和/或IronPython中使用它们。) 谢谢!

将新节点添加到xml结尾的最快方法?

我有一个大的xml文件(大约10 MB)以下简单的结构: ……. ……. ……. ……. ……. 我需要在标记之前的末尾添加一个新节点。 什么是在.net中实现这一目标的最快方法?

使用XDocument解析XML

我可以使用XDocument从以下xml解析“my_cool_id”吗? 12345 12345 12345 12345

用&符号解析XML

我有一个包含XML的字符串,我只想解析成Xelement,但它有一个&符号。 我仍然有问题用HtmlDecode解析它。 有什么建议吗? string test = ” “; XElement.Parse(HttpUtility.HtmlDecode(test)); 我还添加了这些方法来替换这些字符,但我仍然得到XMLException。 string encodedXml = test.Replace(“&”, “&”).Replace(“”, “>”).Replace(“\””, “"”).Replace(“‘”, “'”); XElement myXML = XElement.Parse(encodedXml); 或者甚至尝试过这个: string newContent= SecurityElement.Escape(test); XElement myXML = XElement.Parse(newContent);