eclispe-->window-->preferences-->xml catalog-->add 注意KEY 需要以/dubbo.xsd结尾,如下图所示
如图所示,只要引入相应的xsd文件即可
1. 首先在VS2005中添加一个XSD文件。2. 使用VS2005工具XSD.exe(SDK\v2.0\Bin\xsd.exe)自动生成实体类:
xsd /c /namespace:myCompany /language:CS temp1.xsd
也可以生成DataSet类型的类:
xsd /dataset /language:CS temp1.xsd
( 类文件和XSD之间可以相互转换,也就是说,你也可以先生成类,然后自动生成XSD)
自动读取XML数据到实体类:
XmlSerializer xs = new XmlSerializer(typeof(myClassType))
using (FileStream fs = new FileStream(XmlFilePath, FileMode.Open))
{
return (myClassType)xs.Deserialize(fs)
}
3. 如何由XML生成XSD?
- 可以用工具,如XMLSpy,首先打开XML, 然后DTD/Schema ->Generate DTD/Schema, 选择W3c Sehcma即可。
- 此方法不一定能生成确切满足需求的XSD,另需修改。
4. 如何由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)
}
}
}
}
- 反射读取类的属性:
public static object GetProperty<T>(T item, string PropertyName)
{
PropertyInfo propertyInfo = item.GetType().GetProperty(PropertyName)
if (propertyInfo != null)
{
return propertyInfo.GetValue(item, null)
}
return null
}
- 如何序列化为XML?
/// <summary>
/// Serialize class instance to XML file
/// </summary>
/// <typeparam name="T">type</typeparam>
/// <param name="XMLFileToCreate">XMLFileToCreate</param>
/// <param name="instance">class instance</param>
public void Serialize<T>(string XMLFileToCreate, T instance)
{
if (instance == null) return
XmlSerializer xs = new XmlSerializer(typeof(T))
using (StreamWriter sw = new StreamWriter(XMLFileToCreate))
{
xs.Serialize(sw, instance)
}
}
(Link: 使用XMLSerializer类持久化数据 )
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)