源代码奉上....
using System;
using System.Net;using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.IO;
using System.Text;
using System.Xml;
using System.Collections.Generic;
namespace Common
{
public class ReadXmlHelper
{
protected static string ReadXml(string xml)
{
StringBuilder builder = new StringBuilder();
using (XmlReader reader = XmlReader.Create(new StringReader(xml)))
{
while (reader.Read())
{
switch (reader.NodeType)
{ //注意:此处对于结点,在节点前加分号,将所有节点断开(使用根节点)
case XmlNodeType.EndElement: builder.Append(reader.Name + "|"); break;
case XmlNodeType.Text: builder.Append(reader.Value + "#"); break;
}
}
}
return builder.ToString();
}
/// <summary>
/// 对象集合写入字典(可以用多用户对象调试单用户)
/// </summary>
/// <param name="xml">XML文本</param>
/// <param name="type">处理的类型</param>
/// <returns>多用户字典</returns>
public static IDictionary<int, IDictionary<string, string>> GetDic(string xml, string type)
{
string content = ReadXml(xml).Replace("<span class=H>", null).Replace("</span>", null);
IDictionary<int, IDictionary<string, string>> dits = new Dictionary<int, IDictionary<string, string>>();
IDictionary<string, string> dit = new Dictionary<string, string>();
int i = 0;
string[] arrays = content.Split('|');
foreach (string item in arrays)
{
if (item == type)//最好是,根节点
{
if (dit.Count > 0)
{ i++; dits.Add(i, dit); dit = new Dictionary<string, string>(); }
}
if (!string.IsNullOrEmpty(item))
{
string[] param = item.Split('#');
if (!string.IsNullOrEmpty(param[0]))//注意:必须key值不为空,但value值可以为空
{
dit.Add(param[param.Length - 1], param[0]);
}
}
}
return dits;
}
}
}