使用XmlSerializer序列化对象时,如何去掉空元素?

chilin 2010-04-01 02:23:56
我使用框架定义工具xsd.exe生成了xsd文件的框架定义类,将xml文件反序列化为对象的时候一切正常,但是当我使用XmlSerializer序列化对象的时候,如果属性的值是空字符串,生成的xml文件文件中就会包含该属性的空元素,类似于 <data /> 这种,这样就不能通过xsd的验证了。我的问题是如何能在序列化的时候去掉这种空元素,谢谢大家。
...全文
512 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
chilin 2010-04-01
  • 打赏
  • 举报
回复
有更好的方法欢迎指教
chilin 2010-04-01
  • 打赏
  • 举报
回复
自己解决了,序列化之后再分析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);
}
}
chilin 2010-04-01
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zengzhan 的回复:]
// 处理空格
xmlReader.WhitespaceHandling = WhitespaceHandling.All;

XmlSerializer serializer = new XmlSerializer(typeof(FileGenerater));


g = (FileGenerater)serializer.Deserialize(xmlReader);……
[/Quote]
不是反序列化,是序列化,从对象生成XML
qqzeng-ip 2010-04-01
  • 打赏
  • 举报
回复
// 处理空格
xmlReader.WhitespaceHandling = WhitespaceHandling.All;

XmlSerializer serializer = new XmlSerializer(typeof(FileGenerater));


g = (FileGenerater)serializer.Deserialize(xmlReader);

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧