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;
    }
}
目录
相关文章
|
存储 算法 安全
如何控制上网行为——基于 C# 实现布隆过滤器算法的上网行为管控策略研究与实践解析
在数字化办公生态系统中,企业对员工网络行为的精细化管理已成为保障网络安全、提升组织效能的核心命题。如何在有效防范恶意网站访问、数据泄露风险的同时,避免过度管控对正常业务运作的负面影响,构成了企业网络安全领域的重要研究方向。在此背景下,数据结构与算法作为底层技术支撑,其重要性愈发凸显。本文将以布隆过滤器算法为研究对象,基于 C# 编程语言开展理论分析与工程实践,系统探讨该算法在企业上网行为管理中的应用范式。
321 8
|
存储 监控 算法
解析公司屏幕监控软件中 C# 字典算法的数据管理效能与优化策略
数字化办公的时代背景下,企业为维护信息安全并提升管理效能,公司屏幕监控软件的应用日益普及。此软件犹如企业网络的 “数字卫士”,持续记录员工电脑屏幕的操作动态。然而,伴随数据量的持续增长,如何高效管理这些监控数据成为关键议题。C# 中的字典(Dictionary)数据结构,以其独特的键值对存储模式和高效的操作性能,为公司屏幕监控软件的数据管理提供了有力支持。下文将深入探究其原理与应用。
338 4
|
机器学习/深度学习 监控 算法
员工上网行为监控软件中基于滑动窗口的C#流量统计算法解析​
在数字化办公环境中,员工上网行为监控软件需要高效处理海量网络请求数据,同时实时识别异常行为(如高频访问非工作网站)。传统的时间序列统计方法因计算复杂度过高,难以满足低延迟需求。本文将介绍一种基于滑动窗口的C#统计算法,通过动态时间窗口管理,实现高效的行为模式分析与流量计数。
357 2
|
8月前
|
XML 前端开发 C#
C#编程实践:解析HTML文档并执行元素匹配
通过上述步骤,可以在C#中有效地解析HTML文档并执行元素匹配。HtmlAgilityPack提供了一个强大而灵活的工具集,可以处理各种HTML解析任务。
368 19
|
存储 Java 文件存储
微服务——SpringBoot使用归纳——Spring Boot使用slf4j进行日志记录—— logback.xml 配置文件解析
本文解析了 `logback.xml` 配置文件的详细内容,包括日志输出格式、存储路径、控制台输出及日志级别等关键配置。通过定义 `LOG_PATTERN` 和 `FILE_PATH`,设置日志格式与存储路径;利用 `&lt;appender&gt;` 节点配置控制台和文件输出,支持日志滚动策略(如文件大小限制和保存时长);最后通过 `&lt;logger&gt;` 和 `&lt;root&gt;` 定义日志级别与输出方式。此配置适用于精细化管理日志输出,满足不同场景需求。
3122 1
|
7月前
|
XML 数据采集 API
用Lxml高效解析XML格式数据:以天气API为例
免费Python教程:实战解析中国天气网XML数据,详解Lxml库高效解析技巧、XPath用法、流式处理大文件及IP封禁应对策略,助你构建稳定数据采集系统。
394 0
|
人工智能 自然语言处理 Java
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
FastExcel 是一款基于 Java 的高性能 Excel 处理工具,专注于优化大规模数据处理,提供简洁易用的 API 和流式操作能力,支持从 EasyExcel 无缝迁移。
3779 65
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
|
XML JavaScript Android开发
【Android】网络技术知识总结之WebView,HttpURLConnection,OKHttp,XML的pull解析方式
本文总结了Android中几种常用的网络技术,包括WebView、HttpURLConnection、OKHttp和XML的Pull解析方式。每种技术都有其独特的特点和适用场景。理解并熟练运用这些技术,可以帮助开发者构建高效、可靠的网络应用程序。通过示例代码和详细解释,本文为开发者提供了实用的参考和指导。
552 15
|
监控 算法 安全
基于 C# 的内网行为管理软件入侵检测算法解析
当下数字化办公环境中,内网行为管理软件已成为企业维护网络安全、提高办公效率的关键工具。它宛如一位恪尽职守的网络守护者,持续监控内网中的各类活动,以确保数据安全及网络稳定。在其诸多功能实现的背后,先进的数据结构与算法发挥着至关重要的作用。本文将深入探究一种应用于内网行为管理软件的 C# 算法 —— 基于二叉搜索树的入侵检测算法,并借助具体代码例程予以解析。
218 4
|
Serverless 对象存储 人工智能
智能文件解析:体验阿里云多模态信息提取解决方案
在当今数据驱动的时代,信息的获取和处理效率直接影响着企业决策的速度和质量。然而,面对日益多样化的文件格式(文本、图像、音频、视频),传统的处理方法显然已经无法满足需求。
550 4
智能文件解析:体验阿里云多模态信息提取解决方案

推荐镜像

更多
  • DNS