XML节点自动生成简单实例
有些时候我们在拼装XML的过程中,因为各种拼接会感到非常的麻烦(定义变量模型,自动生成,使用XElement再去组装),我的脑袋感觉都大了,能不能有个稍微比较快捷自动随变量自动生成XML格式的方式,看了网上大牛们的方式,还是老传统,不过代码很健壮耐用,我闲着没事也自己尝试能不能尽量在简化。
1:解析XML
解析的方式方法很多,但是我比较喜欢简单模式,通过系统缓存流进行读写操作(例如以下解析后存放到数据集Dataset中)
//系统内存提供流式的读写操作
var memoryStreams = new MemoryStream();
具体看以下方法(将数据带出后直接存到Dataset中)
//测试用例解析XML公共方法存放至Datatset数据集
public DataSet StringXml(string TestXml)
{
//系统内存提供流式的读写操作
var memoryStreams = new MemoryStream();
//注意格式化字符集
var buffer = Encoding.UTF8.GetBytes(TestXml);
memoryStreams.Write(buffer, 0, buffer.Length);
//设置讲readXml从0开始,不然错误提示XML缺少根元素
memoryStreams.Position = 0;
memoryStreams.Seek(0, SeekOrigin.Begin);
DataSet dsXml = new DataSet();
//将解析出来数组数据放进数据集并返回该数据集
dsXml.ReadXml(memoryStreams);
return dsXml;
}
2:组装XML
下面是我本地测试写的简单示例
public string GetXmlinfo()
{
DataSet dsXml = new DataSet();
dsXml = commonws.GetDsSql("个人中心", "根据证件ID查询信息");
string[] arryList = { "result" };
string result = docHelper.CreatXmlTree(arryList, dsXml);
string state = "0";
string stateMessage = "交易成功";
#region XML组装(详细参数result节点)
StringBuilder returnXml = new StringBuilder();
returnXml.Append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
returnXml.Append("<response>");
returnXml.Append("<resultCode>" + state + "</resultCode>");
returnXml.Append("<resultMessage>" + stateMessage + "</resultMessage>");
returnXml.Append(result);
returnXml.Append("</response>");
#endregion
return Getxml(returnXml.ToString());
}
以上代码除了固定的xml头,我们所拼接的其实是result内容节点,其他都是固定值,以及写死的固定参数值
其中:
CreatXmlTree是本次组装节点的重点
result是本次传入的节点名称,实际根据XML要求名称即可
string[] arryList = { "result" };
string result = docHelper.CreatXmlTree(arryList, dsXml);
CreatXmlTree组装方法展示如下:
/// <summary>
/// </summary>
/// <param name="Xmlparam">内容节点分支名称(以组的形式展示节点名称)</param>
/// <param name="dsDataXml">数据集Dataset形式打开</param>
/// <returns></returns>
public string CreatXmlTree(object[] Xmlparam, DataSet dsDataXml)
{
DataTable dt = dsDataXml.Tables[0];//获取到表
string xmlt1 = Xmlparam[0].ToString();//外节点0 result 获取到节点内容名称
string Temo = string.Empty;
string xmlAdd = string.Empty;
XElement XEle = new XElement("XML");//实例化定义中必须要有值,后面可根据自己变量的传参为准
for (int j = 0; j < dsDataXml.Tables[0].Rows.Count; j++)//循环获取到数据行(与列名一一对应)
{
XEle = new XElement(xmlt1);//拼接节点元素开始
for (int i = 0; i < dsDataXml.Tables[0].Columns.Count; i++)//循环获取内容字段的列名
{
string strRows = string.Empty;//测试
string strColumns = dsDataXml.Tables[0].Columns[i].ToString();//测试
try
{
strRows = dsDataXml.Tables[0].Rows[j][i].ToString(); //遍历后同时获取列名 + 每行首字段依次开始的值
}
catch (Exception ex)
{ }
XEle.Add(
new XElement(strColumns, strRows)//组装XML
);
}
xmlAdd += XEle.ToString();
} return xmlAdd.ToString();
}
返回生成的XML节点展示(如下)
<?xml version="1.0" encoding="utf-8"?>
<response>
<resultCode>0</resultCode>
<resultMessage>交易成功</resultMessage>
<result>
<patId>0000026723</patId>
<patType></patType>
<patName>曾金培</patName>
<patSex>男</patSex>
<patBirth>19550717</patBirth>
<patAddress>和平</patAddress>
<patMobile>18776580849</patMobile>
<patCardType>居民身份证</patCardType>
<patCardNo>000002672320200924</patCardNo>
<admissionNo></admissionNo>
</result>
</response>
到此结束,再也不想再去拼装模型,一个个在拼装起来!大家可以尝试下,我会把源码分享出来,有什么不足的可供大家参考修改。
XML节点自动生成简单实例的更多相关文章
- IDEA Maven Mybatis generator 自动生成代码(实例讲解)(转)
IDEA Maven Mybatis generator 自动生成代码(实例讲解) MyBatis Generator • 简称MBG,是一个专门为MyBatis框架使用者定制的代码生成器,可以快速的 ...
- mybatis generator.xml 配置 自动生成model,dao,mapping
generator.xml文件: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE gener ...
- Matlab中使用脚本和xml文件自动生成bus模块
帮一个老师写的小工具 在一个大工程中需要很多bus来组织信号,而为了规范接口,需要定义很多BusObject,用Matlab语言手写这些BusObject比较费工夫 所以用xml配置文件来写,也便于更 ...
- XML之自动生成类,添加,修改,删除类的属性
1. class ClassHelperDemo { public static void Main() { #region 演示一:动态生成类. //生成一个类t. Type t = ClassHe ...
- 根据xml文件自动生成xsd文件
根据xml生成xsd文档 1. 找到vs自带的xsd.exe工具所在的文件夹位置: C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin 注意 ...
- MyBatis-使用XML或注解的简单实例
一.导入jar包 <dependency> <groupId>junit</groupId> <artifactId>junit</artifac ...
- 自动生成简单四则运算的C语言程序
该程序是在博客园里面找的,具体是谁的找了半天没找到,无法提供它原本的链接.由于自己写的过于简单,且有一些功能暂时无法实现,所以就找了一个来应付作业,望原谅.在这个程序的源码中我改了一个错误的地方,源码 ...
- 项目转移时发生的错误<springboot+mybatis(xml逆向工程自动生成)>
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'app ...
- (二十二)SpringBoot之使用mybatis generator自动生成bean、mapper、mapper xml
一.下载mybatis generator插件 二.生成generatorConfig.xml new一个generatorConfig.xml 三.修改generatorConfig.xml 里面的 ...
随机推荐
- Unity调用PC摄像头
转载于Unity3d圣典里面,具体哪位大侠写的我忘咯. using UnityEngine; using System.Collections; public class CameraTest : M ...
- windows环境下利用Gitblit搭建Git服务器并实现自动部署Web站点目录
Git服务搭建多见于linux环境,但windows主机也不少,目前网上文章诸多不全,且以讹传讹,不甚清楚.下面介绍windows环境下的自动部署和发布. 所需环境及资源:Java环境.Gitblit ...
- C#知识点:操作XML
XML是什么就不用说了文本标记语言. 主要纪录如何对XML文件进行增删改查. Xml的操作类都存在System.xml命名空间下面. 应用型的直接上代码 using System; using Sys ...
- [java]将多个文件压缩成一个zip文件
此文进阶请见:https://www.cnblogs.com/xiandedanteng/p/12155957.html 方法: package zip; import java.io.Buffere ...
- CentOS 7常用命令
常用命令 文件与目录操作 命令 解析 cd /home 进入 ‘/home’ 目录 cd .. 返回上一级目录 cd ../.. 返回上两级目录 cd - 返回上次所在目录 cp file1 file ...
- mysql与redis区别
编号 mysql redis 1 类型 关系型数据库 缓存数据库 2 作用 主要用于存放持久化数据,是将数据存储在硬盘中,读取时速度较慢,而且频繁访问也会导致数据库负载过高. 用于存储使用频繁的 ...
- 电子邮箱有哪些隐藏技能,读懂了效率提升N倍!
很多人将邮箱作为常见的通讯工具,然而,大部分职场人只了解其五分之一的功能.电子邮箱还有很多隐藏技能,身为商务精英的你,必须往下看看哦!今天跟随TOM邮箱小编导,来挖掘下邮箱的潜藏技能吧~ 作为经常外出 ...
- VSCode注册关联自定义类型文件
打开你要注册的文件类型文件[本文中用 ".txt"到".lua"演示] 在VSCode窗口右下角有当前文件类型"Plain Text" 是可 ...
- 【原创】Kuberneters-HelmV3.3.1入门介绍及实践
一.为什么需要Helm? Kubernetes目前已成为容器编排的事实标准,随着传统架构向微服务容器化架构的转变,从一个巨大的单体的应用切分为多个微服务,每个微服务可独立部署和扩展,实现了敏捷开发和快 ...
- PHP实现Restful风格的API(转)
Restful是一种设计风格而不是标准,比如一个接口原本是这样的: http://www1.qixoo.com/user/view/id/1表示获取id为1的用户信息,如果使用Restful风格,可以 ...