技术开发 频道

如何由XSD自动生成XML和实体类


【IT168技术文档】

  项目中有时候要用XML作为数据源,因此需要定义XML文件和相应的类,非常好的方法是首先定义XSD,然后自动生成实体类,最后生成XML和填充数据;读取XML数据源的时候,首先用XSD验证XML数据格式,然后自动读入实体类使用。
  自动读取XML数据到实体类:
XmlSerializer xs = new XmlSerializer(typeof(myClassType)); using (FileStream fs = new FileStream(XmlFilePath, FileMode.Open)) { return (myClassType)xs.Deserialize(fs); }
  如何由XML生成XSD?

  - 可以用工具,如XMLSpy,首先打开XML, 然后DTD/Schema -> Generate DTD/Schema, 选择W3c Sehcma即可。

  - 此方法不一定能生成确切满足需求的XSD,另需修改。


  如何由XSD生成XML?

  - 可以用其他工具,如XMLSpy,DTD/Schema -> Generate sample XML file...

  - 可以由XSD生成类,然后写代码实例化这个类,最后序列化为XML

  - 如何自动给类每个属性设置一个空值:(用反射的方法)

  代码示例:
/// <summary> /// Get all properties and set default value /// </summary> /// <typeparam name="T">Type</typeparam> /// <param name="item">Object</param> private static void ReflctProperties<T>(T item) { PropertyInfo[] pty = typeof(T).GetProperties(); Type t = item.GetType(); if (pty != null) { foreach (PropertyInfo info in pty) { if (!info.CanWrite) continue; if (info.PropertyType == typeof(String)) { t.GetProperty(info.Name).SetValue(item, String.Empty, null); } if (info.PropertyType == typeof(Boolean)) { t.GetProperty(info.Name).SetValue(item, true, null); } } } }
0
相关文章