待操作的xml示例:<?xml version="1.0" encoding="utf-8" ?>
<Root>
<A>asdasd</A>
<B value="1">445</B>
<ClassDemoCollection>
<item>
<ItemId>1</ItemId>
<ItemName>test</ItemName>
</item>
<item>
<ItemId>2</ItemId>
<ItemName>test</ItemName>
</item>
</ClassDemoCollection>
</Root>
一个集合辅助类: [Serializable()]
public class CollectionBaseCommon<T> :CollectionBase where T:class
{
/// <summary>
/// 成员索引
/// </summary>
/// <param name="index"></param>
/// <returns></returns>
public T this[int index]
{
get
{
return (this.List[index]) as T;
}
set
{
this.List[index] = value;
}
} /// <summary>
/// 添加一个成员
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
public int Add(T model)
{
return this.List.Add(model);
} /// <summary>
/// 移除一个成员
/// </summary>
/// <param name="model"></param>
public void Remove(T model)
{
this.List.Remove(model);
}
}
成员及集合操作类:[Serializable]
public class Item
{
public int ItemId{get;set;} public string ItemName{get;set}
}
[Serializable]
public class ClassDemoCollection: CollectionBaseCommon<Item>
{
public ConfigItem GetItem(Item model)
{
if (this.List.Count > 0)
{
foreach (Item item in this.List)
{
if (model == item)
return item;
}
}
return null;
}
}操作及需求是:用Linq To Xml 得到xml文件中<ClassDemoCollection>所有节点后,序列化成类ClassDemoCollectionstatic void Main(string[] args)
{
XDocument doc1 = XDocument.Load("xml.xml");
var items1 = from item in doc1.Descendants("ClassDemoCollection")
select item;
ClassDemoCollection result = new ClassDemoCollection();
foreach (XElement xe in items1)
{
if (xe != null)
{
ClassDemoCollection result = SerializeHelper.SerializeXelementToObj<ClassDemoCollection>(xe);
//相当于把XElemen反序列化为ClassDemoCollection 对象.但是由于取得的节点不是正规的xml文档(缺少<?xml version="1.0"?>这个声明),所以转换是不成功的.求解决方案.
break;
}
}
}
<Root>
<A>asdasd</A>
<B value="1">445</B>
<ClassDemoCollection>
<item>
<ItemId>1</ItemId>
<ItemName>test</ItemName>
</item>
<item>
<ItemId>2</ItemId>
<ItemName>test</ItemName>
</item>
</ClassDemoCollection>
</Root>
一个集合辅助类: [Serializable()]
public class CollectionBaseCommon<T> :CollectionBase where T:class
{
/// <summary>
/// 成员索引
/// </summary>
/// <param name="index"></param>
/// <returns></returns>
public T this[int index]
{
get
{
return (this.List[index]) as T;
}
set
{
this.List[index] = value;
}
} /// <summary>
/// 添加一个成员
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
public int Add(T model)
{
return this.List.Add(model);
} /// <summary>
/// 移除一个成员
/// </summary>
/// <param name="model"></param>
public void Remove(T model)
{
this.List.Remove(model);
}
}
成员及集合操作类:[Serializable]
public class Item
{
public int ItemId{get;set;} public string ItemName{get;set}
}
[Serializable]
public class ClassDemoCollection: CollectionBaseCommon<Item>
{
public ConfigItem GetItem(Item model)
{
if (this.List.Count > 0)
{
foreach (Item item in this.List)
{
if (model == item)
return item;
}
}
return null;
}
}操作及需求是:用Linq To Xml 得到xml文件中<ClassDemoCollection>所有节点后,序列化成类ClassDemoCollectionstatic void Main(string[] args)
{
XDocument doc1 = XDocument.Load("xml.xml");
var items1 = from item in doc1.Descendants("ClassDemoCollection")
select item;
ClassDemoCollection result = new ClassDemoCollection();
foreach (XElement xe in items1)
{
if (xe != null)
{
ClassDemoCollection result = SerializeHelper.SerializeXelementToObj<ClassDemoCollection>(xe);
//相当于把XElemen反序列化为ClassDemoCollection 对象.但是由于取得的节点不是正规的xml文档(缺少<?xml version="1.0"?>这个声明),所以转换是不成功的.求解决方案.
break;
}
}
}
需求是:
从待操作的xml中读出ClassDemoCollection这个节点,返回XElement然后再反序列化为类ClassDemoCollection,..很纠结..