C# 解析XML文件

简介: C# 解析XML文件


工具类

XmlNodeClass

public class XmlNodeClass
    {
        public void Get(XmlNodeList doc,string Path, ref List<XmlNodeModel> xmlNodeModels)
        {
            try
            {
                foreach (XmlNode node in doc)
                {
                    XmlNodeModel model = new XmlNodeModel();
                    //赋值节点路径
                    if (string.IsNullOrEmpty(Path))
                    {
                        model.Path = node.Name;
                    }
                    else
                    {
                        model.Path = Path + "/" + node.Name;
                    }
                    //赋值InnerText
                    model.InnerText = node.InnerText;
                    //赋值Attribute
                    if (node.Attributes != null)
                    {
                        List<AttributeModel> AttributeModelList = new List<AttributeModel>();
                        foreach (XmlAttribute atr in node.Attributes)
                        {
                            AttributeModel attributeModel = new AttributeModel();
                            attributeModel.Name = atr.Name;
                            attributeModel.Value = atr.Value;
                            AttributeModelList.Add(attributeModel);
                        }
                        model.AttributeModelList = AttributeModelList;
                    }
                    xmlNodeModels.Add(model);
                    //存在下一级节点时,进行递归获取
                    if (node.ChildNodes.Count > 0)
                    {
                        Get(node.ChildNodes, model.Path, ref xmlNodeModels);
                    }
                }
            }
            catch (Exception err)
            {
                throw err;
            }
        }
    }

XmlNodeModel

public class XmlNodeModel
{
    /// <summary>
    /// Path:节点的相对路径
    /// Xml中相对路径:POOR_IN200901UV/controlActProcess/subject/observationRequest/id/item
    /// item是节点
    /// </summary>
    public string Path { get; set; }
    //InnerText
    public string InnerText { get; set; }
    public List<AttributeModel> AttributeModelList { get; set; }
}

AttributeModel

public class AttributeModel
    {
        public string Name { get; set; }
        public string Value { get; set; }
    }

XML解析

//将消息转换为xml格式 
 XmlDocument xml = new XmlDocument();
 xml.LoadXml(message);
Element._DataModel model = obj.Convert_Add(xml);//调用转换方法
 //(1)转换
public Element._DataModel Convert_Add(XmlDocument 消息)//第三方传来的消息
{
    try
    {
        //声明实体类保存解析后的数据
        Element._DataModel model = new Element._DataModel();
        //转换成内存Model数据
        Element.Convert.XmlNodeClass nodeClass = new Element.Convert.XmlNodeClass();
        List<Element.Convert.XmlNodeModel> nodeList = new List<Element.Convert.XmlNodeModel>();
        nodeClass.Get(消息.ChildNodes, "", ref nodeList);
        //ID
        Element.Convert.XmlNodeModel node = nodeList.Find(p => p.Path == "PRPM_IN301010UV01/controlActProcess/subject/registrationRequest/subject1/healthCareProvider/id");
        if (node != null)
        {
            for (int i = 0; i < node.AttributeModelList.Count; i++)
            {
                if (node.AttributeModelList[i].Name == "extension")
                {
                    model._ID = node.AttributeModelList[i].Value;
                }
            }
        }
        //_Id
        Element.Convert.XmlNodeModel node9 = nodeList.Find(p => p.Path == "PRPM_IN301010UV01/controlActProcess/subject/registrationRequest/subject1/healthCareProvider/healthCarePrincipalPerson/asAffiliate/affiliatedPrincipalOrganization/id");
        if (node9 != null)
        {
            for (int i = 0; i < node9.AttributeModelList.Count; i++)
            {
                if (node9.AttributeModelList[i].Name == "extension")
                {
                    model.科室_Id = node9.AttributeModelList[i].Value;
                }
            }
        }
        //名称
        Element.Convert.XmlNodeModel node11 = nodeList.Find(p => p.Path == "PRPM_IN301010UV01/controlActProcess/subject/registrationRequest/subject1/healthCareProvider/healthCarePrincipalPerson/asAffiliate/affiliatedPrincipalOrganization/name");
        if (node11 != null)
        {
            if (node11.InnerText != null)
            {
                model.名称 = node11.InnerText;
            }
        }
        //姓名
        Element.Convert.XmlNodeModel node12 = nodeList.Find(p => p.Path == "PRPM_IN301010UV01/controlActProcess/subject/registrationRequest/subject1/healthCareProvider/healthCarePrincipalPerson/name");
        if (node12 != null)
        {
            if (node12.InnerText != null)
            {
                model.姓名 = node12.InnerText;
            }
        }
        return model;
    }
    catch (System.Exception err)
    {
        throw err;
    }
}
目录
相关文章
|
12天前
|
存储 监控 算法
解析公司屏幕监控软件中 C# 字典算法的数据管理效能与优化策略
数字化办公的时代背景下,企业为维护信息安全并提升管理效能,公司屏幕监控软件的应用日益普及。此软件犹如企业网络的 “数字卫士”,持续记录员工电脑屏幕的操作动态。然而,伴随数据量的持续增长,如何高效管理这些监控数据成为关键议题。C# 中的字典(Dictionary)数据结构,以其独特的键值对存储模式和高效的操作性能,为公司屏幕监控软件的数据管理提供了有力支持。下文将深入探究其原理与应用。
31 4
|
21天前
|
机器学习/深度学习 监控 算法
员工上网行为监控软件中基于滑动窗口的C#流量统计算法解析​
在数字化办公环境中,员工上网行为监控软件需要高效处理海量网络请求数据,同时实时识别异常行为(如高频访问非工作网站)。传统的时间序列统计方法因计算复杂度过高,难以满足低延迟需求。本文将介绍一种基于滑动窗口的C#统计算法,通过动态时间窗口管理,实现高效的行为模式分析与流量计数。
38 2
|
2月前
|
存储 Java 文件存储
微服务——SpringBoot使用归纳——Spring Boot使用slf4j进行日志记录—— logback.xml 配置文件解析
本文解析了 `logback.xml` 配置文件的详细内容,包括日志输出格式、存储路径、控制台输出及日志级别等关键配置。通过定义 `LOG_PATTERN` 和 `FILE_PATH`,设置日志格式与存储路径;利用 `&lt;appender&gt;` 节点配置控制台和文件输出,支持日志滚动策略(如文件大小限制和保存时长);最后通过 `&lt;logger&gt;` 和 `&lt;root&gt;` 定义日志级别与输出方式。此配置适用于精细化管理日志输出,满足不同场景需求。
192 1
|
2月前
|
XML JavaScript Android开发
【Android】网络技术知识总结之WebView,HttpURLConnection,OKHttp,XML的pull解析方式
本文总结了Android中几种常用的网络技术,包括WebView、HttpURLConnection、OKHttp和XML的Pull解析方式。每种技术都有其独特的特点和适用场景。理解并熟练运用这些技术,可以帮助开发者构建高效、可靠的网络应用程序。通过示例代码和详细解释,本文为开发者提供了实用的参考和指导。
89 15
|
5月前
|
人工智能 自然语言处理 Java
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
FastExcel 是一款基于 Java 的高性能 Excel 处理工具,专注于优化大规模数据处理,提供简洁易用的 API 和流式操作能力,支持从 EasyExcel 无缝迁移。
811 65
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
|
2月前
|
监控 算法 安全
基于 C# 的内网行为管理软件入侵检测算法解析
当下数字化办公环境中,内网行为管理软件已成为企业维护网络安全、提高办公效率的关键工具。它宛如一位恪尽职守的网络守护者,持续监控内网中的各类活动,以确保数据安全及网络稳定。在其诸多功能实现的背后,先进的数据结构与算法发挥着至关重要的作用。本文将深入探究一种应用于内网行为管理软件的 C# 算法 —— 基于二叉搜索树的入侵检测算法,并借助具体代码例程予以解析。
58 4
|
3月前
|
Java API 数据处理
深潜数据海洋:Java文件读写全面解析与实战指南
通过本文的详细解析与实战示例,您可以系统地掌握Java中各种文件读写操作,从基本的读写到高效的NIO操作,再到文件复制、移动和删除。希望这些内容能够帮助您在实际项目中处理文件数据,提高开发效率和代码质量。
75 4
|
4月前
|
Serverless 对象存储 人工智能
智能文件解析:体验阿里云多模态信息提取解决方案
在当今数据驱动的时代,信息的获取和处理效率直接影响着企业决策的速度和质量。然而,面对日益多样化的文件格式(文本、图像、音频、视频),传统的处理方法显然已经无法满足需求。
184 4
智能文件解析:体验阿里云多模态信息提取解决方案
|
5月前
|
C#
基于 C# 编写的 Visual Studio 文件编码显示与修改扩展插件
基于 C# 编写的 Visual Studio 文件编码显示与修改扩展插件
111 9
|
2月前
|
算法 测试技术 C语言
深入理解HTTP/2:nghttp2库源码解析及客户端实现示例
通过解析nghttp2库的源码和实现一个简单的HTTP/2客户端示例,本文详细介绍了HTTP/2的关键特性和nghttp2的核心实现。了解这些内容可以帮助开发者更好地理解HTTP/2协议,提高Web应用的性能和用户体验。对于实际开发中的应用,可以根据需要进一步优化和扩展代码,以满足具体需求。
246 29

推荐镜像

更多