使用XmlSerializer序列化对象时,如何去掉空元素? 我使用框架定义工具xsd.exe生成了xsd文件的框架定义类,将xml文件反序列化为对象的时候一切正常,但是当我使用XmlSerializer序列化对象的时候,如果属性的值是空字符串,生成的xml文件文件中就会包含该属性的空元素,类似于 <data /> 这种,这样就不能通过xsd的验证了。我的问题是如何能在序列化的时候去掉这种空元素,谢谢大家。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 // 处理空格 xmlReader.WhitespaceHandling = WhitespaceHandling.All; XmlSerializer serializer = new XmlSerializer(typeof(FileGenerater)); g = (FileGenerater)serializer.Deserialize(xmlReader); 不是反序列化,是序列化,从对象生成XML 自己解决了,序列化之后再分析xml文件,去掉空元素XDocument doc = XDocument.Load(xmlFile);RemoveEmptyElement(doc.Root); private static void RemoveEmptyElement(XElement element) { var nodeList = from emptyElement in element.Elements() where (!emptyElement.HasElements) && emptyElement.IsEmpty select emptyElement; nodeList.Remove(); nodeList = from parentElement in element.Elements() where parentElement.HasElements select parentElement; foreach (XElement xe in nodeList) { RemoveEmptyElement(xe); } } C#几个简单的问题 操作Excel的问题 利用avicap32.dll实现的实时视频传输,在发送和接收视频时应该怎样编写程序? 怎样用USB实现类似串口的通信 关于线程的问题。谢谢~~~ 一个用WebRequest获取网页内容的问题. (帮顶有分!)带数据库打包——如何在安装时修改app.config配置文件 Console.Read()的迷惑???? 数据更新的又一令人头痛问题(很有挑战性,难啊) 那有install shield 可以做.net程序安装的版本下载? 怎么将参数做方法名使用? 请帮我看一段代码
xmlReader.WhitespaceHandling = WhitespaceHandling.All; XmlSerializer serializer = new XmlSerializer(typeof(FileGenerater));
g = (FileGenerater)serializer.Deserialize(xmlReader);
RemoveEmptyElement(doc.Root); private static void RemoveEmptyElement(XElement element)
{
var nodeList = from emptyElement in element.Elements()
where (!emptyElement.HasElements) && emptyElement.IsEmpty
select emptyElement;
nodeList.Remove();
nodeList = from parentElement in element.Elements()
where parentElement.HasElements
select parentElement;
foreach (XElement xe in nodeList)
{
RemoveEmptyElement(xe);
}
}