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;
    }
}
目录
相关文章
|
5天前
|
XML Web App开发 JavaScript
XML DOM 解析器
浏览器通常内置XML解析器,将XML转换为JavaScript可操作的DOM对象。XML DOM提供遍历、修改XML节点的函数。
|
5天前
|
XML Web App开发 JavaScript
XML DOM 解析器
浏览器内置的XML解析器将XML转换为JavaScript可操作的DOM对象,允许遍历、访问和修改XML节点。要加载XML文档,如&quot;books.xml&quot;,可以使用XMLHttpRequest。以下是示例代码:创建XMLHTTP对象,打开GET请求,发送请求到服务器,然后将响应解析为DOM对象。这个过程在不同版本的浏览器中可能略有差异。
|
7天前
|
XML 数据格式 Python
python挑出训练集里图片对应的xml文件,方便统计标签框的类别与数目_python 统计voc2007xml中某一类别框个数(1)
python挑出训练集里图片对应的xml文件,方便统计标签框的类别与数目_python 统计voc2007xml中某一类别框个数(1)
|
8天前
|
XML Web App开发 JavaScript
XML DOM 解析器
浏览器内置的XML解析器将XML转换为XML DOM,便于JavaScript操作。通过XMLHttpRequest加载XML文档,如`books.xml`,创建HTTP请求并获取响应,将响应转化为DOM对象。示例展示了在不同浏览器中创建XMLHttpRequest对象并加载XML的过程。
|
9天前
|
XML 数据格式
XML Schema 复杂元素类型详解:定义及示例解析
在XML Schema(XSD)中,复杂元素包含其他元素和/或属性,分为4类:空元素、仅含元素、仅含文本和既含元素也含文本。定义复杂元素可通过直接声明或引用预定义的复杂类型。复杂空元素仅含属性,而仅含元素的类型则只包含其他子元素。XSD提供了`&lt;xs:sequence&gt;`、`&lt;xs:all&gt;`、`&lt;xs:choice&gt;`等指示器来规定元素顺序和出现次数,以及`&lt;xs:attributeGroup&gt;`和`&lt;xs:group&gt;`来组织元素和属性。
171 7
|
10天前
|
XML Web App开发 JavaScript
XML DOM 解析器
浏览器内置的XML解析器将XML转换为JavaScript可操作的DOM对象。通过XMLHttpRequest加载XML文档,如`books.xml`,创建HTTP请求并获取响应,然后将响应解析为XML DOM,以便用JavaScript访问和处理。示例代码展示了在不同浏览器中如何使用XMLHttpRequest加载XML。
|
12天前
|
XML 数据格式
小米备份descript.xml文件
小米备份descript.xml文件
32 0
|
12天前
|
XML Java 数据库连接
mybatis中在xml文件中通用查询结果列如何使用
mybatis中在xml文件中通用查询结果列如何使用
44 0
|
12天前
|
XML JavaScript 前端开发
xml文件使用及解析
xml文件使用及解析
|
12天前
|
SQL
Mybatis.xml文件中大于小于等于
Mybatis.xml文件中大于小于等于
14 0

推荐镜像

更多