我使用框架定义工具xsd.exe生成了xsd文件的框架定义类,将xml文件反序列化为对象的时候一切正常,但是当我使用XmlSerializer序列化对象的时候,如果属性的值是空字符串,生成的xml文件文件中就会包含该属性的空元素,类似于 <data /> 这种,这样就不能通过xsd的验证了。我的问题是如何能在序列化的时候去掉这种空元素,谢谢大家。

解决方案 »

  1.   

         // 处理空格
            xmlReader.WhitespaceHandling = WhitespaceHandling.All;        XmlSerializer serializer = new XmlSerializer(typeof(FileGenerater));
            g = (FileGenerater)serializer.Deserialize(xmlReader);
      

  2.   

    不是反序列化,是序列化,从对象生成XML
      

  3.   

    自己解决了,序列化之后再分析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);
                }
            }