写了个XML结构体转OBJ的功能

Qt中自定义结构体及其序列化 Qt,自定义结构体,序列化,glog 阅读详情

在AS3里用Lua的性能太低了, 即使每条配置数据只要1毫秒, 但随便一套任务或状态就有几千条数据, 加载的进度条就要跑开好几秒。 实在不能耐,只好把配置数据改用XML写,再转到AS3保存,忍痛牺牲Lua的脚本功能(自动生成配置表和相关小功能用不了了)。

另外补充一句, Altova XMLSpy这个XML编辑工具相当好用。 特别是其网格模式下的自动合并相关参成列表的功能, 做得相当漂亮。

		public function XML2OBJ( _xml:XML ):Object
		{
			var ret = new Object();
			
			//设置属性
			var pars:XMLList = _xml.attributes();
			for each( var par:XML in pars )
			{
				ret[par.name().toString()]= par.toString();
			}
			
			//设置集合
			var table:XMLList = _xml.children();
			if( table.length() > 0 )
			{
				for each( var item:XML in table ) 
				{
					var sub_ret:Object = XML2OBJ(item);
					var tmp:Object = ret[ item.name() ];
					if( null == tmp )
					{
						ret[ item.name() ] = sub_ret;
					}
					else if(tmp is Array)
					{
						(tmp as Array).push( sub_ret );
					}
					else
					{
						ret[ item.name() ] = new Array(tmp,sub_ret);
					}
				}
			}
			return ret;
		}


/**
		 * xml转obj
		 */	
		public function XML2OBJ( _xml:XML ):Object
		{
			var ret:Object = new Object();
			
			//设置属性
			var pars:XMLList = _xml.attributes();
			for each( var par:XML in pars )
			{
				par.prettyPrinting=false;
				var val:String = par.toString();
				val = val.split("\r\n").join("\r"); //flash会因为换行符的定义不同导致出现两次换行
				if( "\"" == val.charAt() )
				{
					ret[par.name().toString()]= val.substr(1,val.length-2);
				}
				else if( "" != val && val is String)
				{
					ret[par.name().toString()]= Number( val );
				}
				else
				{
					ret[par.name().toString()]= val;
				}
			}
			
			//设置集合
			var table:XMLList = _xml.children();
			if( table.length() > 0 )
			{
				for each( var item:XML in table ) 
				{
					var name:String = item.name();
					var item_type:String = name.substr(0,4);
					var sub_ret:Object = XML2OBJ(item);
					var tmp:Object = ret[ name ];
					if( null == tmp && null == sub_ret.TAB_ID && "ARY_" != item_type )
					{
						ret[ name ] = sub_ret;
					}
					else
					{
						//调整原结构
						if( null == tmp )
						{
							ret[ name ] = new Array();
						}
						else if( !(tmp is Array) )
						{
							ret[ name ] = new Array(tmp);
						}
						//添加新数
						if( null == sub_ret.TAB_ID )
						{
							ret[ name ].push( sub_ret );
						}
						else
						{
							ret[ name ][sub_ret.TAB_ID] = sub_ret;
						}
					}
				}
			}
			return ret;
		}



/**
* * 替换字符串中特殊字符
* */
public function txt2xml( _txt:String ):String
{
if (_txt == null)
{
return "";
}
var txt:String = _txt;
var reg:RegExp = null;
reg = /&/g;
txt = txt.replace(reg, "&");
reg = /</g;
txt = txt.replace(reg, "&lt;");
reg = />/g;
txt = txt.replace(reg, "&gt;");
reg = /\"/g;
txt = txt.replace(reg, "&quot;");
return txt;
}

/**
* * 还原字符串中特殊字符
* */
public function xml2txt( _txt:String ):String
{
if (_txt == null)
{
return "";
}
var txt:String = _txt;
var reg:RegExp = null;
reg = /&lt;/g;
txt = txt.replace("&lt;", "<");
reg = /&gt;/g;
txt = txt.replace("&gt;", ">");
reg = /&quot;/g;
txt = txt.replace("&quot;", "\"");
reg = /&amp;/g;
txt = txt.replace("&amp;", "&");
return txt;
}


C++序列化库xpack:告别手动解析,实现结构体与JSON/XML/BSON自动转换 序列化是将数据结构或对象状态转换为可存储或传输格式的过程,是网络通信、数据持久化和API交互的基石。其核心原理在于定义数据与字节流间的映射规则,传统手动解析方式易出错且难以维护。现代序列化技术通过编译时元编程或运行时反射自动生成编解码逻辑,显著提升开发效率和代码健壮性。xpack作为C++开源库,正是这一技术的优秀实践。它采用头文件库设计,通过宏和模板元编程在编译时为结构体注入序列化代码,实现零开销抽象。同时,其适配器模式统一了JSON、XML、BSON等多种格式的接口。该库极大地简化了C++后端开发中处理 阅读详情

相关推荐

xml转化obj

基于xstream将xml与obj相互转化的java工程

XML和Object的转换

XML和Object之间的转换

2447

华为硬件逻辑岗笔试题(一)

积少成多,集腋成裘,坚持!!! 目录 1. 进制转换 2. 状态机和编码方式 3. 存储器的分类 4. Verilog语法中的操作符 5. 对组合逻辑的认识 6. 对时序逻辑的认识 7. 竞争冒险的认识 8. 基本时序逻辑电路 9. 建立时间和保持时间 10. 同步时序电路 11. 组合逻辑和时序逻辑判断 13. 基本总线的理解 14.加法器 15.FPGA开发工具 1. 进制转换 1、十进制46.25对应的二进制表达式为( )。 A 101110.11...

qq_42235129的博客 1万+

XML转换成object,object转换成XML

1.转换代码如下 package com.ihealthtek.jbagent.util; import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import javax.xml.bind.Marshaller; import javax.xml.bind.Unmarshaller; import ja...

忆江南的博客 3978

【学习笔记】人群归因分数 PAF 以及combined PAF(更新)

在此推荐2篇发表在lancet以及jama子刊上的paf文章,这两篇文章套路是一样的,只是在不同国家进行。希望对大家学习PAF有所帮助,后面有新内容也会继续分享,也欢迎大家分享使用R语言计算PAF的经验~~~的时候,先建立了相关矩阵,再做主成分分析,得到communality。详细信息大家可翻阅原文。

weixin_53499537的博客 1498

5G NR切换测量事件解析:从A1到B2的实战应用指南

本文深入解析5G NR切换测量事件,从A1到B2的实战应用指南。详细介绍了系统内切换事件(A1-A6)和系统间切换事件(B1-B2)的触发条件与配置建议,帮助优化网络性能。通过实际案例分享,展示如何调整参数提升切换成功率和降低乒乓切换率,适用于5G网络优化工程师。

tcp8optimizer的博客 514

java中XML转JSON、JSON转XML、XML转对象(Object)、对象(Object)转XML,利用XSD验证XML(手把手教你如何接收、处理、验证XML数据)

在实际项目开发过程中,尤其是web项目的开发,我们或多或少会使用XML格式的数据进行数据交换;即使自己的项目用不到,但和第三方接口对接时,也是会经常遇到用XML格式数据的第三方接口,因为XML是标准通用标记语言 (SGML) 的子集,非常适合 Web 传输。所以对XML数据的处理是必须要掌握的。下面就手把手拿一个真实的接口对接案例来教你们如何处理这类数据,耐心看下去。...............

qq_43907515的博客 1万+

AI人工智能与TensorFlow的教育科技应用

随着科技的飞速发展,AI人工智能在各个领域都展现出了巨大的潜力,教育领域也不例外。本文章的目的在于深入探讨AI人工智能与TensorFlow在教育科技中的具体应用,包括智能教学系统的开发、学生学习情况的评估与预测等方面。范围涵盖了从基础概念到实际项目应用的各个层面,旨在为教育科技工作者和相关研究者提供全面且深入的技术指导。本文将首先介绍AI人工智能和TensorFlow的核心概念及其联系,让读者对相关技术有基本的了解。接着详细讲解核心算法原理和具体操作步骤,并结合数学模型和公式进行深入分析。

AI智能探索者的博客 1698

XML和Object的相互转换

首先我以一个实体类为例子 1.1新建一个实体类 packagecom.pengliu.bean; importjavax.xml.bind.annotation.XmlRootElement; @XmlRootElement publicclassUser...

chenling9018的博客 200

用 n8n 提取静态网页内容:从 HTTP Request 到 HTML 节点全解析

本文介绍了如何使用n8n的HTTP Request和HTML节点组合提取静态网页内容。首先通过HTTP Request节点获取网页HTML源码,然后使用HTML节点解析并提取所需数据。关键点包括:1)HTTP Request节点设置URL和GET方法;2)HTML节点配置Source Data为JSON并指定data字段;3)重点掌握Extraction Values参数,特别是CSS选择器(使用.和#定位元素)、Key命名、Return Value类型选择等。文章通过实例演示了标题和正文的提取方法,并提供

muyouking 4568

ue4 classuobject没有成员beginplay_【教程】UE4 C++实现简单的AI及遇到的坑

后续文章更新移步→微信公众号“虚幻社区”(mantra-xhsq),您的支持是我创作的动力。我们这篇文章的宗旨是用代码实现简单的AI,有多简单,只是搭建一个具有PawnSensing组件和回调的AI。重点也不是做一个AI,而是了解一下C++代码如何搭建最基本的AI(关于蓝图如何创建请自行百度)。如果英语还不错的话,可以移步 参考链接,链接中的内容除了创建基本的PawnSensing组件还有关于行为...

weixin_39929918的博客 1127

XML转换Object

   项目中很多时候需要将xml内容转换成java对象来处理,这样一来数据就直观,操作起来也更加方便,     下面介绍下如何通过java将xml内容转换java对象。     1、MyXml.xml &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;sysConfig id="sys"&gt; &lt;say id="a"

androidyangguang的博客 366

对MixPad精灵(触屏语音开关)进行解剖分析

概述 最近有点忙,已经很久没有更新文章了,对不起各位网友啦~ 这次对ORVIBO的新产品:MixPad精灵款的来个剖析,希望对大家有所帮助! 首先,我买了一台对应的设备,直接去官网采购,价格吗还算OK,400多的价格。 拆箱的过程我就不写了,简单的上个图就行了。 一、拆包: 主屏板包装盒(顶部): 主屏板包装盒(底部): 后盖电源部分无内容,我就不拍了,给优快云空间省点存储位置。 二、设备剖析开始 接下来,我们开始对设备进行剖析,步骤如下: 1、拆掉主屏板后盖板,...

LeeKwen的专栏 3945

xpack XML序列化基础:C++结构体与XML互转的10个关键点

如果你正在寻找一种**C++结构体与XML互转**的高效方案,那么 xpack 值得你花5分钟了解一下。xpack 是一个只有头文件(header-only)的轻量级序列化库,不需要编译库、不需要生成代码,只要包含一个头文件,就能在 C++ 结构体和 JSON、XML、YAML、BSON 之间自由转换。本文聚焦于它的 **XML序列化**能力,用 10 个关键点带你快速掌握核心用法,零基础也能上手

gitblog_00785的博客 940

什么是 SAPGUI 里的 Logon Group/Server

这意味着,不同的用户连接可以被分配到不同的应用服务器,以实现均衡的资源利用和降低某一服务器的负载压力。在这种配置下,欧洲的用户登录时选择“EUROPE_GROUP”,系统将自动选择一个位于欧洲的数据中心的服务器进行连接,这样不仅减少了网络延迟,还实现了服务器间的负载均衡。用户在 SAPGUI 中登录时,只需选择相应的 Logon Group(例如“FIN_GROUP”),系统就会自动将他们的连接请求分配到当前负载最小的应用服务器上,这种动态分配大大提升了系统的响应速度和稳定性。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1069

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Gin 框架学习笔记(02)— 参数自动绑定到结构体

参数绑定模型可以将请求体自动绑定到结构体中,目前支持绑定的请求类型有 JSON 、XML 、YAML 和标准表单 form数据 foo=bar&boo=baz 等。换句话说,只要定义好结构体,就可以将请求中包含的数据自动接收过来,这是 Gin 框架非常神奇的功能。 ​ 在定义绑定对应的结构体时,需要给结构体字段设置绑定类型的标签,比如绑定 JSON 数据时,设置字段标签为 json:"fieldname" 。使用绑定可以更快捷地把数据传递给程序中的数据对象。 ​ 使用 Gin框架中系列绑定有关方法

wohu1104的专栏 9315

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

3.记一个go语言字节数组和结构体转换:binary-obiect(obj的结构为byte)

//代码段一:message的占用空间大小固定 package main import ( "bytes" "encoding/binary" "fmt" ) type message struct{ id int32 len int32 data [4]byte //这个也可以是切片,但是如果是切片,需要解两次才能解成msg对象 } type pack struct{ } ...

小豆角的博客 2564

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Gin源码之gin.Context结构体及其方法

Gin源码之gin.Context结构体及其方法

weixin_52690231的博客 5065

C# 读取XML配置帮助类

每次写个小程序都要为程序写个读取配置类,今天整理了一个通用读取XML配置类。终于不用在配置上浪费时间了。 利用反射把读取到的XML内容装载到实例中,支持 基本数据类型,结构体,一维数组。不支持列表,字典等复杂的集合。 使用 LoadConfiguration 加载配置 有些功能还未完成,忽略的字段, 默认值, 必须要有的配置等等 using System; using System.Xml; us...

磨刀不误砍柴工 897

xml 解析

xml使用

qq_38240926的博客 821

C# 序列化xml数据到class

public static class XmlClassData     {         /// 从XML读取数据         /// 读取的数据类型         /// 包含数据的文件 FileInfo 信息         /// 返回为 null 的时候读取失败         public static C ReadDataFromXml(t

CRUD程序员的博客 812

c语言结构体成员变量私有化,C语言结构体变量私有化

操作系统 : CentOS7.3.1611_x64gcc版本 :4.8.5问题描述C语言结构体定义中的变量默认是公有(Public)属性,如果实现成员变量的私有(Private)化?解决方案将结构体的定义放入源码件中实现,头文件只放声明。比如有如下结构体(obj.h文件中定义):struct Obj {int id;char *name;};typedef struct Obj Obj;并定义如下...

weixin_36336256的博客 1037

xpack XML高级玩法:CDATA/属性/数组标签自定义的完整指南

xpack 是一款开源的 C++ 序列化库,它能让你用几行宏定义,就完成 C++ 结构体与 JSON、XML、YAML、BSON 之间的互相转换。其中 **xpack 的 XML 解析与生成** 最为灵活,除了基础的 `<name>Pony</name>` 这种字段映射,还支持 **CDATA 文本、XML 属性、数组标签自定义** 等高级玩法。本文用最小示例带你一次学会这些技巧,让 XML 解析

gitblog_00830的博客 972

【转】Xml序列化

  XML序列化是将对象的公共属性和字段转换为XML格式,以便存储或传输的过程。反序列化则是从XML输出中重新创建原始状态的对象。XML序列化中最主要的类是XmlSerializer类。它的最重要的方法是Serialize和Deserialize方法,它位于System.Xml.Serialization命名空间。 一、XML序列化基本要点   在本节开始之前,首先来看一个最简单的...

weixin_30345577的博客 89

Xml 序列化

Xml 序列化   XML序列化是将对象的公共属性和字段转换为XML格式,以便存储或传输的过程。反序列化则是从XML输出中重新创建原始状态的对象。XML序列化中最主要的类是XmlSerializer类。它的最重要的方法是Serialize和Deserial...

173

Xml序列化

XML序列化是将对象的公共属性和字段转换为XML格式,以便存储或传输的过程。反序列化则是从XML输出中重新创建原始状态的对象。XML序列化中最主要的类是XmlSerializer类。它的最重要的方法是Serialize和Deserialize方法,它位于System.Xml.Serialization命名空间。 一、XML序列化基本要点   在本节开始之前,首先来看一个最简单的示例:...

weixin_30359021的博客 336
上一篇: lua表转as3
下一篇: 生成xml配置文件里带转义字符的文本
xiaodan007
博客等级 码龄18年 112粉丝 242原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值