博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# 读取资源文件.resx 中的xml资源
阅读量:7195 次
发布时间:2019-06-29

本文共 2681 字,大约阅读时间需要 8 分钟。

 

主要是以字符串的形式来读取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;
}

转载于:https://www.cnblogs.com/hglSV/p/10177172.html

你可能感兴趣的文章
Redis中5种数据结构的使用场景
查看>>
转:线性表的查找-顺序查找
查看>>
原创: 开题报告中摘要部分快速将一段文字插入到word的表格中
查看>>
TCP/IP协议的关系?
查看>>
rsync 参数说明及使用参数笔记好文摘抄
查看>>
UVA548 Tree (二叉树的遍历)
查看>>
礼物(BFS)
查看>>
相似基因(动态规划)
查看>>
经验小结(个人笔记)
查看>>
jq对页面元素进行排序
查看>>
安装laravel
查看>>
VB调用VC编写的Dll之万恶的参数传递
查看>>
数据库&数据库迁移
查看>>
Spring基础之 反射(Reflection)
查看>>
python判断结构总结
查看>>
Android开发进阶从小工到专家之性能优化
查看>>
(转)WCF开发框架形成之旅---WCF的几种寄宿方式
查看>>
Linux-Load blance
查看>>
Directx11教程(66) D3D11屏幕文本输出(1)
查看>>
s3c2440之cache
查看>>