xml转实体

 /// <summary>
/// 把xml转换成实体
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="model"></param>
/// <param name="xmlString"></param>
/// <returns></returns>
public static List<T> GetXmlModel<T>(T model, string xmlString) where T : class
{
List<T> list = new List<T>();
try
{
XmlDocument xml = new XmlDocument();
xml.LoadXml(xmlString);//把xml格式的字符串转为XMLDataDocument对象
XmlNodeList data = xml.DocumentElement.ChildNodes;//得到的是xml对象的节点数组
foreach (XmlNode item in data)
{
Dictionary<string, string> xmlDic = new Dictionary<string, string>();
if (item.ChildNodes.Count > 0)
{
foreach (XmlNode it in item.ChildNodes)
{
xmlDic.Add(it.LocalName, it.InnerText);
}
}
var m = model.GetType();
foreach (PropertyInfo p in m.GetProperties())
{
string name = p.Name;
if (xmlDic.Keys.Contains(name))
{
string value = xmlDic.Where(x => x.Key == name).FirstOrDefault().Value;
p.SetValue(model,
string.IsNullOrEmpty(value) ? null : Convert.ChangeType(value, p.PropertyType), null);
}
}
list.Add(model);
}
return list;
}
catch (Exception ex)
{
return list;
}
}

实体转xml

/// <summary>
/// 地图文件 - 实体转xml
/// </summary>
/// <param name="patrolEquipmentDto"></param>
/// <param name="path"></param>
private static void MapFileToXmlMethod(List<LinkageConfigFileDto> patrolEquipmentDto, string path)
{
XmlDocument xmlDoc = new XmlDocument();
//加入XML的声明段落,Save方法不再xml上写出独立属性
xmlDoc.AppendChild(xmlDoc.CreateXmlDeclaration("1.0", "UTF-8", null));
//加入根元素 XmlElement root = xmlDoc.CreateElement("Effect_Config");
xmlDoc.AppendChild(root); foreach (var item in patrolEquipmentDto)
{
XmlElement memberlist = xmlDoc.CreateElement("Item");
XmlElement source_code = xmlDoc.CreateElement("source_code");
source_code.InnerText = item?.source_code; XmlElement source_name = xmlDoc.CreateElement("source_name");
source_name.InnerText = item?.source_name; XmlElement source_type = xmlDoc.CreateElement("source_type");
source_type.InnerText = item?.source_type; XmlElement device_id = xmlDoc.CreateElement("device_id");
device_id.InnerText = item?.device_id; memberlist.AppendChild(source_code);
memberlist.AppendChild(source_name);
memberlist.AppendChild(source_type);
memberlist.AppendChild(device_id);
root.AppendChild(memberlist);
}
xmlDoc.Save(path);
}

C# 将实体转xml/xml转实体的更多相关文章

  1. XML文件与实体类的互相转换

    XML文件与实体类的互相转换 一.将XML文件反序列化为实体类对象 1. 通常程序的配置信息都保存在程序或者网站的专门的配置文件中(App.config/web.config).但是现在为了演示XML ...

  2. 利用JAXB实现java实体类和xml互相转换

    1.应用场景 在使用WebService实现数据上传下载,数据查询时,可以利用JAXB实现java实体类和xml互相转换 2.Demo 2.1 student.java 实体类,包含list(set同 ...

  3. C#实体类生成XML与XML Schema文档

    一.实体类生成XML private void CreateXML() { Type[] objType = DBEntityRegst(); foreach (var item in objType ...

  4. 简单实体类和xml文件的相互转换

    最近写一个题目,要求将一组员工实体类转换成xml文件,或将xml文件转换成一组实体类.题目不难,但写完感觉可以利用泛型和反射将任意一个实体类和xml文件进行转换.于是今天下午立马动手 试了下,做了个简 ...

  5. Dynamics CRM 通过RetrieveEntityRibbonRequest和RetrieveApplicationRibbonRequest导出实体的Ribbon XML

    今天看到勇哥的博客介绍了两个request指令用来导出实体的Ribbon XML,在没有工具之前编辑ribbon都是手工导出xml然后编辑的对于很多一开始接触CRM就用工具的人可能不是很熟悉.查了下这 ...

  6. 自动生成实体类和xml

    1 首先eclipse需要安装一个插件 2 两个配置文件 1 generator.properties 2 generator.xml <?xml version="1.0" ...

  7. 使用C#实现实体类和XML相互转换

    一.实体类转换成XML 将实体类转换成XML需要使用XmlSerializer类的Serialize方法,将实体类序列化 public static string XmlSerialize<T& ...

  8. 利用Xml架构生成实体访问类

    由xml生成xsd及实体类   xmldataset工具 使用VS2005工具XSD.exe(SDK/v2.0/Bin/xsd.exe)自动生成实体类: xsd /c /namespace:myCom ...

  9. HTTP 响应实体主体:XML 及 XML parser

    本文内容 HTTP 响应实体主体:XML XML parser 总结 各编程语言实现的 XML parser   HTTP 响应实体主体:XML 实体主体(entity-body)通常是HTTP响应里 ...

  10. JAVA Spring 简单的配置和操作 ( 创建实体类, 配置XML文件, 调试 )

    < 1 > 实体类 Person package java_spring.modle; /** * 一个实体类( Person ) */ public class Person { pri ...

随机推荐

  1. docker删除image

    删除<None><None>镜像 docker rmi $(docker images -f "dangling=true" -q) 如果删除时出现了ima ...

  2. vs2019 常用数据结构 纯C语言 头文件实现 (持续更新改错中)单链表,

    1.单链表: 1 #pragma once 2 #ifndef _List_H 3 #include<stdio.h> 4 #include<stdlib.h> 5 #defi ...

  3. python中的import、from import以及import as的区别

    import import是python提供的用于导入模块的机制,导入的是整个模块的内容.模块可以是py.pyc.pyd,可以是系统自带的,也可以是自定义的. 使用语法:import os pytho ...

  4. Linux环境使用Docker安装MySql

    系统环境: CentOS 7.6 64位(同样适用于Ubuntu) 安装步骤: 1.创建文件夹 /home/docker/mysql/config /home/docker/mysql/data 2. ...

  5. Http方式发送Soap报文调用WebService

    WebService的实现方式之一就是基于HTTP发送SOAP报文进行调用. 可能由于各种原因,我们不能使用CXF.AXIS等框架调用,此时的解决方案之一就是直接基于HTTP发送SOAP报文,然后将响 ...

  6. vue v-model的原理

    关于v-model v-model 可以实现表单与data里的双向绑定 很多插件上可以在组件上使用v-model,他是如何实现的呢,其实v-model就是一个语法糖 <input v-model ...

  7. 记一次前端ajax禁止使用异步async的操作

    环境: 前端layui  jquery 情况: 页面在iframe里面, 然后点击按钮,弹出输入框.点击确认,弹出框发送内容到后台, 传送数据到后台后,然后根据返回一个map给前端.前端解析数据,返回 ...

  8. 关于Docker容器内不能ping通外网

    先在主机重启docker服务 systemctl stop docker systemctl start docker 然后再开启容器,进入容器 https://blog.csdn.net/qq_42 ...

  9. 命令提示符怎么打开和Dos命令的基本使用

    Dos命令 Dos命令窗口我们可以通过win+R输入cmd来打开 如果要用管理员身份打开直接在开始里搜索命令提示符,以管理员身份打开! 一些简单的Dos命令 //切换盘符 盘符名: //进入 cd / ...

  10. Qt实现带有映射关系的进度条

    1.编写继承自widget的新类,这里我们定义为colorWidget; 2.在colorWidget中添加私有变量QVector<QRect> m_rects,用于存放进度条的不同区间( ...