PB创建和解析XML方案

PB解析XML字符串的实践方法 近期,在医院HIS系统开发中,要用到PB(PowerBuilder)程序解析XML文件,在网上找了半天,在次整理一下。 解析XML文件要使用到PBDOM_Builder、PBDOM_Document、PBDOM_Element等类,这些类无法直接使用,需要将PowerBuilder安装目录下的pbdom90.pbd文件导入PB项目工程中。 1. 导入pbdom90.pbd文件 将pbdom90.pbd拷贝到工程目录下,鼠标右击工程,选择properties,弹出如下界面,选择browse,选中... 阅读详情

示例XML文档

本文将以下面的XML文档为例,演示在PB12.5中构建与解析XML文档:

<?xml version="1.0"?>
<bookstore>
	<book id="1">
		<name>冰与火之歌</name>
		<author>乔治马丁</author>
		<year>2014</year>
		<price>89</price>
	</book>
	<book id="2">
		<name>安徒生童话</name>
		<year>2004</year>
		<price>77</price>
		<language>English</language>
	</book>
</bookstore>

创建XML

pugixmldoc doc
pugixmlnode node_bookstore
pugixmlnode node_book
string ls_xml

doc = create pugixmldoc

node_bookstore = doc.add_child('bookstore')

node_book = node_bookstore.add_child('book')

node_book.set_attribute( 'id', '1')
node_book.add_child( 'name', '冰与火之歌')
node_book.add_child( 'author', '乔治马丁')
node_book.add_child( 'year', '2014')
node_book.add_child( 'price', '89')


node_book = node_bookstore.add_child('book')

node_book.set_attribute( 'id', '2')
node_book.add_child( 'name', '安徒生童话')
node_book.add_child( 'year', '2004')
node_book.add_child( 'price', '77')
node_book.add_child( 'language', 'English')

ls_xml = doc.stringify( )
return 0

代码运行效果如下:
在这里插入图片描述

解析XML

string ls_xml
pugixmldoc doc
pugixmlnode node_books[]
st_book book1, book2

ls_xml = '<?xml version="1.0"?>' +&
			'<bookstore>' +&
			'	<book id="1">' +&
			'		<name>冰与火之歌</name>' +&
			'		<author>乔治马丁</author>' +&
			'		<year>2014</year>' +&
			'		<price>89</price>' +&
			'	</book>' +&
			'	<book id="2">' +&
			'		<name>安徒生童话</name>' +&
			'		<year>2004</year>' +&
			'		<price>77</price>' +&
			'		<language>English</language>' +&
			'	</book>' +&
			'</bookstore>'

doc = create pugixmldoc
doc.parse( ls_xml)

doc.select_nodes( '/bookstore/book', node_books)
book1.id = node_books[1].get_attribute( 'id')
book1.name = node_books[1].get_child( 'name').get_value()
book1.author = node_books[1].get_child( 'author').get_value()
book1.year = node_books[1].get_child( 'year').get_value()
book1.price = node_books[1].get_child( 'price').get_value()

book2.id = node_books[2].get_attribute( 'id')
book2.name = node_books[2].get_child( 'name').get_value()
book2.year = node_books[2].get_child( 'year').get_value()
book2.price = node_books[2].get_child( 'price').get_value()
book2.language = node_books[2].get_child( 'language').get_value()

return 0

代码运行效果如下:
在这里插入图片描述

方法说明

该方案基于pugixml项目通过PBNI封装,功能使用上类似pugixml,主要有如下方法:

方法名功能说明
add_child添加子节点
get_attribute获取属性值
ge_child获取子节点
get_children获取子节点数组
get_value获取当前节点的值
parse解析XML文档
select_node按XPATH表达式获取节点
select_nodes按XPATH表达式获取节点数组
set_attribute设置属性值
set_value设置当前节点的值
stringify输出XML文档

项目下载

使用过程中出现问题请反馈作者:
QQ:768310524
TEL、WX:18649713925

PowerXML.dll

PB创建XML解析函数 XML解析函数 类型:nonvisualobject 名称:sailjson edit source: forward global type sailjson from nonvisualobject end type type json_pair from structure within sailjson end type end forward type json_pair f... 阅读详情

相关推荐

PB解析XML字符串 把XML 变为数据窗口

PB解析XML字符串 把XML 变为数据窗口,然后可以方便的获取各字段内容,内含源码PB解析XML字符串 把XML 变为数据窗口,然后可以方便的获取各字段内容,内含源码

PBDOM解析XML 和xml基础知识

前一阵子,工作需要做解析XML,很郁闷以前都没做过,上网各种查资料,有说pbdom的有说用微软那个自带插件的,百度的例子都有一句就是:“请先了解xml的基础知识........”,因为很懒...一直没上网查xml的基础知识.....干看pbdom各种看不懂,最近先了解了xml,再看pbdom终于看明白了,也写了总结,在这里与还在干pb研发的新手分享下。  先分享下网上摘下的xml: Eleme

大强哥的专栏 3200

PB 解析XML (代码案例)

PB 解析XML (代码案例)

pb9中数据窗口的XML特性(一、原理篇)

        从pb9开始,DataWindow开始支持直接从XML文档中导入数据,将检索到的数据保存为XML文档,以及使用XSL格式对象(XSL-FO) 的新功能。本文根据XML Features in PowerBuilder® 9.0相关内容节选翻译。这是第一部分。1、 数据窗口导出引擎(DataWindow Export Engine)       它是数据窗口新增的组件,主要利用导出模

wu_07的专栏 5660

pb转换成xml的程序

可以将PB的数据窗口,非常快捷和灵活的转换成XML,程序中有相关函数调用。

PB9解析xml(封装好的自定义对象,源码)

PB9解析xml(封装好的自定义对象,源码)

PB9解析xml封装好的自定义对象源码介绍:高效的XML解析工具

PB9解析xml封装好的自定义对象源码介绍:高效的XML解析工具 去发现同类优质开源项目:https://gitcode.com/ 在当今信息化的时代,数据解析与转换是软件开发中不可或缺的一环。本文将向您推荐一款优秀的开源项目——PB9解析xml封装好的自定义对象源码,帮助您轻松应对XML解析的挑战。 项目介绍 PB9解析xml是一款基于PB9框架的XML解析工具。它通过封装自定义对象,实现了XM...

gitblog_06713的博客 1071

PBXML写读例子,接口程序用得着

PBXML读写示例,很全,写法。PB9.0版本编写的代码。很好的学习资料。

【亲测免费】 PB 解析XML 代码案例

PB 解析XML 代码案例 去发现同类优质开源项目:https://gitcode.com/ 欢迎使用本代码案例库,这里提供了使用PowerBuilder(简称PB)解析XML文档的示例。对于需要在PB应用中处理XML数据的开发者来说,这个案例将是一个宝贵的参考资源。通过本案例,您可以学习如何有效地在PowerBuilder环境中读取、解析并操作XML数据,这对于实现数据交换或配置文件读取等功能至...

gitblog_09814的博客 676

PB解析xml指定路径的节点内容

例子是自己用PB12.5写的的程序,可以解析指定路径下的节点的内容和属性的值,通用型,拿出来给需要的朋友参考参考,具体用法参照例子中的写法。

PB 读取XML文件 实例

1、PB 读取XML文件 实例 2、PB 12.5 版本写的

【亲测免费】 提升PowerBuilder应用的XML解析能力:PB解析XML代码案例推荐

提升PowerBuilder应用的XML解析能力:PB解析XML代码案例推荐 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在现代软件开发中,XML作为一种广泛使用的数据交换格式,其重要性不言而喻。然而,对于使用PowerBuilder(简称PB)的开发者来说,如何在PB环境中高效地解析和处理XML数据,一直是一个挑战。为了帮助开发者克服这一难题,我们推出了一个专门针...

gitblog_09709的博客 1008

Nangate 45nm FreePDK开源工艺库:从RTL到GDSII全流程实战

在数字IC设计中,标准单元库是连接逻辑综合与物理实现的基石,它定义了每个单元的逻辑功能、时序延迟与物理尺寸。开源EDA工具链的成熟,使得个人也能借助免费工艺套件完整跑通芯片设计流程。Nangate 45nm FreePDK作为一套经典的开源工艺库,凭借结构清晰、配套完善的特性,成为学习数字后端和时序收敛的理想训练场。从综合工具Yosys读取Liberty文件进行逻辑映射,到OpenROAD执行布局布线与时钟树综合,再到使用OpenSTA分析关键路径延迟,这套流程涵盖了数字设计最核心的环节。通过亲手操作,开发

weixin_29168393的博客 278

提升PowerBuilder应用的XML解析能力:PB解析XML代码案例推荐

提升PowerBuilder应用的XML解析能力:PB解析XML代码案例推荐 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在现代软件开发中,XML作为一种广泛使用的数据交换格式,其重要性不言而喻。对于使用PowerBuilder(简称PB)进行开发的开发者来说,如何在PB环境中高效地解析和处理XML数据,是一个常见且关键的需求。为了帮助开发者更好地掌握这一技能,我们...

gitblog_09724的博客 1066

ThinkBook 16p 2024 BIOS降压定频实战:从解锁CFG Lock到AC Loadline调优

高性能笔记本在满载时频繁撞上温度墙,通常源于固件层默认电压冗余过大,而系统级降压工具又受限于CFG Lock锁定。要根治问题,需要从BIOS固件层面理解电压管理机制——AC/DC Loadline参数控制着CPU在不同负载下的电压请求,通过修改这些负载线值可以安全降低电压,解锁CFG Lock后还能让XTU、ThrottleStop等软件调参工具恢复可用。这种BIOS级调优在工程实践中广泛用于改善散热、稳定频率、压降风扇噪音,尤其适用于联想ThinkBook 16p 2024与拯救者Y9000P等采用HX平

weixin_32496547的博客 388

如何用DETR(detection transformer)训练自己的数据集

DETR(detection transformer)简介 DETR是Facebook AI的研究者提出的Transformer的视觉版本,是CNN和transformer的融合,实现了端到端的预测,主要用于目标检测和全景分割。 DETR的Github地址:link

weixin_50233398的博客 3万+

一种根据ProtoBuf字段变化动态解析PB数据的方案

需求分析    先来回顾一下解析PB数据的常规流程:先定义好proto文件,然后使用protoc工具生成java代码,再使用生成的代码里的parseFrom方法去解析PB数据。    有这样一种场景,使用过程中,PB数据定义有变更,比如增删改了字段,常规方法是修改proto文件,重新生成java代码重新打包。那么需求来了,能不能做到做到PB数据字段变更后不打包、仅重启进程就能解析新的数据呢?解决方...

4018

FreeCAD地下管道自动化建模实战:Python脚本从入门到导出OBJ

本文详细介绍了如何利用FreeCAD的Python API实现地下管道的自动化建模,从数据处理到模型导出OBJ格式的全流程。通过实战案例和代码示例,展示了圆形和矩形截面管道的创建方法,以及法兰连接等特殊处理技巧,大幅提升工程设计效率。

ff678的博客 249

PB DOM解析XML

本文链接:https://blog.youkuaiyun.com/lxqluo/article/details/6109144 因为项目需要,研究了一下pb dom 处理xml 的功能,发现还挺方便的。废话少说,直接进入正题: 1. PBDOM设置 1)添加pbdom120.pbd(%SYBASE%/Shared/PowerBuilder)到工程的pbl列表中 2) %SYBASE%/Shared/Powe...

zhou279818998的专栏 1426

Ceres-solver examples之pose_graph_3d学习笔记

Ceres-solver examples之pose_graph_3d学习笔记简要说明变量说明关键步骤一、Costfunction的搭建其中包括:二、构造Problem 简要说明 ceres-solver库是google的非线性优化库,可以对slam问题,机器人位姿进行优化,使其建图的效果得到改善。pose_graph_3d是官方给出的二维平面上机器人位姿优化问题,需要读取一个g2o文件,运行程序...

幽冥小龙的博客 3891

零承诺的启动之路:详解 SAP BTP 的 Pay-As-You-Go for SAP BTP(含案例与迁移策略)

SAP BTP的Pay-As-You-Go(PAYG)模式为零承诺的按需付费方案,适合PoC和小规模上线场景。它提供生产环境直接启用服务的能力,按月后付标准目录价,无预付和折扣。PAYG可与BTP企业协议(BTPEA/CPEA)混合使用,用量稳定后可平滑迁移至CPEA获取更好财务条款。关键优势在于灵活开启/关闭服务,支持通过SAP Discovery Center估算费用,并配合成本治理工具控制支出。该模式适用于创新项目初期,当业务规模可预测时再考虑转为承诺型消费模式。

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

PB操作XML文件

     PB操作是通过msxml.ocx来实现操作XML文件的。 IE5版本的计算机都自动安装了此文件,如没有,需要下载后注册此文件。1 声明ole对象      oleobject dom,version,root,childnode,childnextNode,headnode,datanode2 创建ole对象     dom = create oleobject3

2281

BLDC控制实验:方波、霍尔、开环、定速、正转

本文记录博主学习BLDC控制软件的过程。 文章目录1 概述2 软件架构及工具链2.1 软件架构2.2 工具链3 底层代码生成3.1 时钟配置3.2 按键输入配置 1 概述 本文是博主第一次做BLDC控制实验,目的仅仅是写代码让BLDC转起来,而暂时不考虑其他复杂的需求。 控制的方法是比较简单的六步换相法。利用电机内部的霍尔传感器,通过参考电机厂家给出的二二导通换相表,生成方波来控制电机。第一次实验为了简化需求,只考虑开环、定速、正转的情况: 开环:不考虑速度反馈,直接给PWM让电机转起来; 定速:不考虑速

u013288925的博客 1万+

数据交换格式 - PB(protocol buffer),xml,json,array

PB 扩充容易, 二进制 序列化简单 json xml 数组

迟来大师的博客 3860

ARM功耗管理软件之DVFS&AVS

思考:功耗管理软件栈及示例?WFI&WFE?时钟&电源树?DVFS&AVS?

AI-安全-功耗 1232

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

PB中调用MICROSOFT.XMLDOM的实例

PB中调用MICROSOFT.XMLDOM的实例                 在通信程序中,通信的格式经常使用XML格式,下面是在PB中利用MICROSOFT.XMLDOM的对象来生成XML字串及解析XML字串内的内容的例子。         新建一个窗体,在窗体中放上两个按钮两个单行编辑框,按钮1用于生成一个XML串并显示在第1个编辑框内,按钮2的作用是将生成的XML串中ASKFOR标记内的

guwd000的专栏 2302

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

上一篇: PB动态创建带参数据窗口
下一篇: PB开发WebSocket服务端方案PowerServer
JasonFriday
博客等级 码龄9年 254粉丝 29原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值