110,536
社区成员
发帖
与我相关
我的任务
分享
server.xml
<?xml version="1.0" encoding="utf-8"?>
<FileInfo>
<file>
<Name>1.jpg</Name>
<Ldate>2012-05-01 </Ldate>
</file>
<file>
<Name>2.jpg</Name>
<Ldate>2012-05-02 </Ldate>
</file>
<file>
<Name>3.jpg</Name>
<Ldate>2012-04-02 17:27:56</Ldate>
</file>
<file>
<Name>4.jpg</Name>
<Ldate>2012-05-02 </Ldate>
</file>
<FileInfo>
client.xml
<?xml version="1.0" encoding="utf-8"?>
<FileInfo>
<file>
<Name>1.jpg</Name>
<Ldate>2012-04-01 </Ldate>
</file>
<file>
<Name>2.jpg</Name>
<Ldate>2012-04-02 </Ldate>
</file>
<file>
<Name>3.jpg</Name>
<Ldate>2012-04-02 </Ldate>
</file>
<FileInfo>
//比较两个xml文件的差异返回差异的列表
//定义了一个DllFile类来辅助,然后再根据差异的Lisst<DllFile>来生成一个对比后有差异的xml文件.
public List<DllFile> GetModiflyList<T>(List<DllFile> newModel, List<DllFile> oldModel)
{
List<DllFile> list = new List<DllFile>();
foreach (DllFile newMod in newModel)
{
bool IsExist = false;
foreach (DllFile oldMol in oldModel)
{
//取得老实体对象的属性集合
PropertyInfo[] pi = oldMol.GetType().GetProperties();
//定义记数器
int i = 0;
//将老实体对象的没一个属性值和新实体对象进行循环比较
foreach (PropertyInfo p in pi)
{
//防止object.Equals时实例化对象发生异常
object o_new = newMod.GetType().GetProperty(p.Name).GetValue(newMod, null);
if (o_new == null)
o_new = (object)String.Empty;
//防止object.Equals时实例化对象发生异常
object o_old = p.GetValue(oldMol, null);
if (o_old == null)
o_old = (object)String.Empty;
//新老实体比较并记录成功次数
if (object.Equals(o_new, o_old))
{
i++;
}
//若成功次数和属性数目相等则说明已经存在或者没有发生过修改条出循环
if (i == pi.Length)
{
IsExist = true;
break;
}
}
//没有发生过修改条出循环
if (IsExist)
break;
}
//如果不存在则添加该实体到List<T>中
if (!IsExist)
list.Add(newMod);
}
return list;
}
GetXmlData()
{
ArrayList headersubList = new ArrayList();
//获取当前XML文档的根 一级
XmlNode oNode = m_oDom.DocumentElement;
//获取根节点的所有子节点列表
XmlNodeList oList = oNode.ChildNodes;
//标记当前节点
XmlNode oCurrentNode;
//遍历所有二级节点
for (int i = 0; i < oList.Count; i++)
{
//二级
oCurrentNode = oList[i];
//检测当前节点的名称,节点的值是否与已知匹配
if (oCurrentNode.Name.ToLower().Equals("store"))
{
//检测是否有子节点 三级
if (oCurrentNode.HasChildNodes)
{
Console.WriteLine(oCurrentNode.ChildNodes.Count);
//遍历当前节点的所有子节点
for (int n = 0; n < oCurrentNode.ChildNodes.Count; n++)
{
//检测当前节点的子节点名称是否与已知匹配
if (oCurrentNode.ChildNodes[n].Name.ToLower() == "sale")
{
//获取该节点所有属性,以供查询
XmlNamedNodeMap oMap = oCurrentNode.ChildNodes[n].Attributes;
Hashtable headItem = new Hashtable();
headItem.Add("Id", oCurrentNode.Attributes.GetNamedItem("Id").Value);
headItem.Add("Name", oCurrentNode.Attributes.GetNamedItem("Name").Value);
headItem.Add("OrderNo", oMap.GetNamedItem("OrderNo").Value);
headItem.Add("Qty", oMap.GetNamedItem("Qty").Value);
headersubList.Add(headItem);
Console.WriteLine(oCurrentNode.Attributes.GetNamedItem("Id").Value);
Console.WriteLine(oCurrentNode.Attributes.GetNamedItem("Name").Value);
Console.WriteLine(oMap.GetNamedItem("OrderNo").Value);
Console.WriteLine(oMap.GetNamedItem("Qty").Value);
Console.ReadLine();
}
}
}
}
}
}