主要是以字符串的形式来读取xml,然后通过遍历读取节点,通过节点属性名称获取属性值

 

/// <summary>
/// 初始化OPC参数配置
/// </summary>
/// <returns></returns>
public static OCPParamsDefine InitOPCParamsConfig()
{
OCPParamsDefine _OCPParamsDefine = null; ;
byte[] buffer = Encoding.GetEncoding("GB2312").GetBytes(OPCClientResource.OPCClientParams);
MemoryStream ms = new MemoryStream();
ms.Write(buffer, 0, buffer.Length);
ms.Position = 0;
XmlTextReader xmlReader = new XmlTextReader(ms);
_OCPParamsDefine= LoadFromXml(xmlReader);
xmlReader.Close();
return _OCPParamsDefine;

}

/// <summary>
/// 从xml文件加载配置
/// </summary>
/// <param name="xmlReader">xml文档</param>
static OCPParamsDefine LoadFromXml(XmlTextReader xmlReader)
{
xmlReader.WhitespaceHandling = WhitespaceHandling.None;
while (xmlReader.Read())
{
if (xmlReader.NodeType == XmlNodeType.Element && string.Compare(xmlReader.Name, "OPCServerParam", true) == 0)
{
OCPParamsDefine _OCPParamsDefine = new OCPParamsDefine();
if (!xmlReader.IsEmptyElement)
{
xmlReader.Read();
int beginNodeDepth = xmlReader.Depth;
do
{
if (xmlReader.NodeType == XmlNodeType.Element)
{
if (string.Compare(xmlReader.Name, "Groups", true) == 0)
{
string groupsName=xmlReader.GetAttribute("Name");
_OCPParamsDefine.GroupsName = groupsName;
// OCPParamsDefine _OCPParamsDefine = new OCPParamsDefine(groupsName);
do
{
xmlReader.Read();
if (xmlReader.NodeType == XmlNodeType.Element)
{
if ((string.Compare(xmlReader.Name, "Group", true) == 0))
{
do
{
string groupName=xmlReader.GetAttribute("Name");
Group group = new Group(groupName) { GroupsName=groupsName};
group.Items = GetItems(xmlReader, groupName, groupsName);//获取组下的每一项

_OCPParamsDefine.Groups.Add(group);
xmlReader.Skip();
} while (!xmlReader.EOF);
}
}
// xmlReader.Skip();
} while (!xmlReader.EOF);

}
}
// xmlReader.Skip();
} while (beginNodeDepth == xmlReader.Depth && !xmlReader.EOF);
}
return _OCPParamsDefine;
// break;
}
}
return null;
}

static List<Item> GetItems(XmlTextReader xmlReader, string groupName, string groupsName)
{
List<Item> items = new List<Item>();
xmlReader.Read();
if (xmlReader.NodeType == XmlNodeType.Element)
{
if ((string.Compare(xmlReader.Name, "Items", true) == 0))
{
do
{
xmlReader.Read();
if (xmlReader.NodeType == XmlNodeType.Element)
{
if ((string.Compare(xmlReader.Name, "Item", true) == 0))
{
string itemName = xmlReader.GetAttribute("Name");
int clientHandler = Convert.ToInt32(xmlReader.GetAttribute("ClientHandler"));
Item item = new Item() { GroupsName=groupsName,GroupName = groupName, _Item = itemName, ClientHandler = clientHandler };
items.Add(item);
// group.Items.Add(item);
}
}
// xmlReader.Skip();
} while (!xmlReader.EOF);
}
}
return items;
}

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-07-06
  • 2021-12-12
  • 2022-02-04
  • 2022-12-23
  • 2021-12-24
  • 2022-12-23
猜你喜欢
  • 2022-01-20
  • 2021-09-15
  • 2022-01-18
  • 2022-12-23
  • 2021-10-12
  • 2021-07-19
相关资源
相似解决方案