
那是因为空值不允许作为一个无法改变的内部政治.
使用xml结果我需要将其转换为JSON并将其序列化为客户端.
为此,我正在使用:
string JsonString = Newtonsoft.Json.JsonConvert.SerializeXmlNode(xmlDoc,Newtonsoft.Json.Formatting.None,true);
好;现在我需要将每个01/01/1900日期转换为DateTime.MinValue(01/01/0001),同时转换为JsON;我怎么处理这个?
解决方法 UPDATE – 修改后的代码,适用于任何值为01/01/1900的节点/属性.我会在转换为JsON之前处理XML文档.如果您的日期值是节点或属性值,这是linqPad示例.由于我不知道你的XML数据结构只是简单的例子:
voID Main(){ // IF IT IS NODE VALUE var xml = @"<data> <objectA> <dateValueA>01/01/1900</dateValueA> <dateValueB>01/01/1971</dateValueB> </objectA> <objectB> <dateValueA>01/01/2002</dateValueA> <dateValueB>01/01/1900</dateValueB> <dateValueZ>01/01/2011</dateValueZ> </objectB> <objectC> <dateValueA>01/01/1910</dateValueA> <dateValueB>01/01/2012</dateValueB> <dateValueC>01/01/1900</dateValueC> </objectC> </data>"; var xmlDoc = new Xmldocument(); xmlDoc.LoadXml(xml); var nodes = xmlDoc.SelectNodes("//*[text()='01/01/1900']"); foreach(XmlNode node in nodes) { node.InnerText = "01/01/0001"; } string JsonString = Newtonsoft.Json.JsonConvert.SerializeXmlNode(xmlDoc,true); "// IF IT IS NODE VALUE - RESulTS".Dump(); JsonString.Dump(); // IF IT IS ATTRIBUTE VALUE var xmlAttr = @"<data> <objectA dateValueA='01/01/1900' dateValueB='01/01/1900' dateValueC='01/01/2011' /> <objectB dateValueB='01/01/2011' someOtherDate='01/01/1900' /> <objectC dateValueC='01/01/1900' dontChangeThisDate='05/04/1923' /> </data>"; var xmlDocAttr = new Xmldocument(); xmlDoc.LoadXml(xmlAttr); var nodesAttr = xmlDoc.SelectNodes("//*[@*='01/01/1900']"); for(var i=0; i < nodesAttr.Count; i++) { foreach(XmlAttribute attrib in nodesAttr[i].Attributes) { if (attrib.Value == "01/01/1900") { attrib.Value = "01/01/0001"; } } } string JsonStringAttr = Newtonsoft.Json.JsonConvert.SerializeXmlNode(xmlDoc,true); "// IF IT IS ATTRIBUTE VALUE - RESulTS".Dump(); JsonStringAttr.Dump();} 结果:
// IF IT IS NODE VALUE - RESulTS{"objectA":{"dateValueA":"01/01/0001","dateValueB":"01/01/1971"},"objectB":{"dateValueA":"01/01/2002","dateValueB":"01/01/0001","dateValueZ":"01/01/2011"},"objectC":{"dateValueA":"01/01/1910","dateValueB":"01/01/2012","dateValueC":"01/01/0001"}}// IF IT IS ATTRIBUTE VALUE - RESulTS{"objectA":{"@dateValueA":"01/01/0001","@dateValueB":"01/01/0001","@dateValueC":"01/01/2011"},"objectB":{"@dateValueB":"01/01/2011","@someOtherDate":"01/01/0001"},"objectC":{"@dateValueC":"01/01/0001","@dontChangeThisDate":"05/04/1923"}} 这对你有用吗?
总结以上是内存溢出为你收集整理的c# – 从XML转换为JSON时更改属性值全部内容,希望文章能够帮你解决c# – 从XML转换为JSON时更改属性值所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)