开发接口中难免会遇到一些数据对接需要转换城xml,看到很多之前的代码都使用很传统的方法循环集合并定义xml后一一生成的,代码之封锁 特此使用了简单易用linq操作分享给大家,希望可以帮到需要的同学

今天就带大家简单使用Linq生成XML,及Linq操作XML的基本操作。实体生成XML和XML生成实体互转

一、实体→XM的操作

如以下是演示的产品实体模型如下:

    public class Product
{
public int id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
public int Category { get; set; }
}

操作集合list,生成xml

            //构造一个商品集合

            List<Product> list = new List<Product>();
for (int i = 1; i < 21; i++)
{
list.Add(new Product { id = 1, Name = $"商品{i}", Price = new Random().Next(i, 1000), Category = new Random(i).Next(20) });
}
var xml = new XElement("products",
from p in list
select new XElement("product",
new XAttribute("id", p.id),
new XAttribute("name", p.Name),
new XElement("price", p.Price),
new XElement("category", p.Category))); Console.WriteLine(xml.ToString());

那么问题来了,当我们接口接收到xml时候如何又将xml转换为实体尼?

一、XML→实体的操作

操作是一样的快捷简单,linq肯定是少不了的,item.xml是文件,此处也可以是读取文件流,大家可以根据自己的需求修改。

            XDocument document = XDocument.Load("item.xml");
var collection = document.Descendants("products")
.Descendants("product").Select(
node => new Product
{
id = Convert.ToInt16(node.Attribute("id")),
Name = node.Attribute("name").Value,
Price = Convert.ToDecimal(node.Attribute("rice")),
Category = Convert.ToInt16(node.Attribute("category"))
});

最终完整代码:

            List<Product> list = new List<Product>();
for (int i = 1; i < 21; i++)
{
list.Add(new Product { id = 1, Name = $"商品{i}", Price = new Random().Next(i, 1000), Category = new Random(i).Next(20) });
}
var xml = new XElement("products",
from p in list
select new XElement("product",
new XAttribute("id", p.id),
new XAttribute("name", p.Name),
new XElement("price", p.Price),
new XElement("category", p.Category))); Console.WriteLine(xml.ToString()); XDocument document = XDocument.Load("item.xml");
var collection = document.Descendants("products")
.Descendants("product").Select(
node => new Product
{
id = Convert.ToInt16(node.Attribute("id")),
Name = node.Attribute("name").Value,
Price = Convert.ToDecimal(node.Attribute("rice")),
Category = Convert.ToInt16(node.Attribute("category"))
}); foreach (var item in collection)
{
Console.WriteLine(item.Name);
}

简单快捷明了,不知是否帮到了正在看帖的你?

Linq操作XML生成XML,实体生成XML和互转的更多相关文章

  1. 使用mybatis-generator-core工具自动生成mybatis实体

    我们可以使用mybatis-generator-core这个工具将数据库对象转换成mybatis对象,具体步骤如下. 1.mybatis-generator-core下载 下载地址:http://do ...

  2. 生成XML文件,通过实体生成XML文件

    实体 using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Xm ...

  3. Mybatis Generator生成Mybatis Dao接口层*Mapper.xml以及对应实体类

    [前言] 使用Mybatis-Generator自动生成Dao.Model.Mapping相关文件,Mybatis-Generator的作用就是充当了一个代码生成器的角色,使用代码生成器不仅可以简化我 ...

  4. C# Linq方式生成SAP对接的XML格式内容(一般处理程序 ashx )

    Linq生成XML的方法: string CreateXML(string strkey, string strDATAJSON) { XDeclaration dec = new XDeclarat ...

  5. Mybatis的逆向工程,自动生成代码(Mapper,xml,bean)

    步骤: 1. 新建一个Maven项目: 然后导入maven依赖: <dependencies> <dependency> <groupId>org.mybatis& ...

  6. 生成当前目录文件的xml描述

    需求场景:例如需要在当前目录下把相关文件组织成xml文件去描述.通常在组织项目中的升级文件时候可能会用到. 代码示例: using System; using System.Collections.G ...

  7. Android中XML文件的序列化生成与解析

    xml文件是非常常用的,在android中json和xml是非常常用的两种封装数据的形式,从服务器中获取数据也经常是这两种形式的,所以学会生成和解析xml和json是非常有用的,json相对来说是比较 ...

  8. Android学习记录(1)—Android中XML文件的序列化生成与解析

    xml文件是非常常用的,在android中json和xml是非常常用的两种封装数据的形式,从服务器中获取数据也经常是这两种形式的,所以学会生成和解析xml和json是非常有用的,json相对来说是比较 ...

  9. 5.20 mybatis反向生成的映射文件xml(如果需要自己定义其他sql语句时如下)

    解决mybatis-generator 生成的mapper.xml覆盖自定义sql的问题 mybatis-generator是个好工具,一建即可生成基本增删改成功能的mapper.xml.但这些是不够 ...

  10. Android 生成和Pull解析xml

    一.单个对象生成xml 生成以下xml,该怎么生成呢? <?xml version='1.0' encoding='UTF-8' standalone='yes' ?> <accou ...

随机推荐

  1. Mybatis 总结ResultMap的复杂对象查询

    association:映射的是一个POJO类,处理一对一的关联关系 collection:映射的一个集合列表,处理的是一对多的关联关系 模版 <!--column不做限制,可以为任意表的字段, ...

  2. 如何让 3D 数字孪生场景闪闪发光

    今日图扑软件功能分享:我们将探讨 HT 系统如何通过分组管理灯光.裁切体和流光,以提高场景光影效果的精准度和整体可控性. HT 中的灯光.裁切体.流光是会影响它所在区域一定范围内的其他节点的表现,如 ...

  3. Linux 基于flock命令实现多进程并发读写文件控制

    基于flock命令实现多进程并发读写文件控制 需求描述 实际项目中,需要在Linux下通过shell脚本并发读写同一个文件,但是希望同一时刻,只有一个进程可以在读.写目标文件. 解决方案 使用floc ...

  4. java面试一日一题:讲下ThreadLocal

    问题:请讲下ThreadLocal 分析:首先要了解ThreadLocal的基本原理:其次要理解ThreadLocal发生内存泄漏的原因:最后ThreadLocal是如何做到线程隔离的 回答要点: 主 ...

  5. springsecurity流程梳理与总结

    springsecurity的基本使用方法学习完了,还是有些懵圈,再回过头来梳理一下流程以及使用情况 1-4.传一个User实体,new一个UserPasswordAuthenticationToke ...

  6. 【FTP】小米手机FTP传输

    设置方法 打开[文件管理],右上角按钮选择[远程管理] 点击设置按钮 默认保持唤醒状态 设置FTP账户的用户名密码 Windows访问: 然后开启服务即可: 手机和电脑连接同一个网络内访问 每次接入网 ...

  7. 【SpringBoot】07 探索配置方式 Part3 多环境配置

    1.按多个Profile文件来配置 SpringBoot默认会使用第一个 我们可以在默认的application.properties中设置激活哪种环境配置 profile的命名规则 2.按Yml可以 ...

  8. 【Vue】Re13 CLI(Command Line Interface)

    一.What is CLI Command Line Interface 命令行接口 但是说是命令行界面,在官方又被称为脚手架 一个单词三个意思,所以令人困惑 但是根据实际意义用途来说就是帮助开发者更 ...

  9. 在单机条件下,MPI4PY与纯Python多进程代码来比较是否有性能优势???

    如题: 最近在看MPI4PY的代码,但是发现这东西除了编写简洁外(少量代码实现复杂的多进程通信,包括单机和多机),好像也没有别的太多功能,当然MPI本身在多机通信广播.规约上做的很成熟,但是假设我们只 ...

  10. git clone 如何通过proxy进行远程代码仓库拷贝下载

    git使用proxy的方式和ssh的情况是差不多的,给出借鉴: SSH如何通过proxy进行服务器连接 ------------------------------------------------ ...