彩票走势图

XBinder™架构编译器授权购买
下载:10 收藏:10

XBinder™架构编译器 (产品编号:14338)

一种 XML 数据绑定工具,用于从 XML 模式规范生成 C/C++、Java 或 C# 数据结构和

标签:

开发商: Objective Systems

当前版本: XBinder 2.8.0

产品类型:控件

产品功能:网络通讯

平台语言:中文l英文

开源水平:不提供源码

本产品的分类与介绍仅供参考,具体以商家网站介绍为准,如有疑问请来电 023-68661681 咨询。

XBinder™架构编译器是一种用于C++、Java和C#等编程语言的高性能数据绑定工具,它能够将XML Schema、JSON Schema、Google Protocol Buffers等数据格式编译成对应的代码库,从而实现应用程序与数据交互的快速和可靠性。

多种数据格式支持

XBinder™架构编译器支持多种数据格式,包括XML Schema、JSON Schema、Google Protocol Buffers、ASN.1、FIX等。

多语言支持

XBinder™架构编译器支持多种编程语言,包括C++、Java、C#、Python等。

易于使用

XBinder™架构编译器具有简单易用的界面和操作流程,用户可以通过图形界面或命令行接口进行数据格式的编译和代码库的生成。

可扩展性

XBinder™架构编译器具有强大的可扩展性,可以通过插件或自定义代码生成模板等方式进行定制化开发

平台兼容性

XBinder™架构编译器支持多种操作系统和平台,包括Windows、Linux、macOS、iOS、Android等。

高性能

XBinder™架构编译器生成的代码库具有高性能和低内存占用,能够快速地序列化和反序列化数据。

XBinder™架构编译器适用于多种应用场景,例如网络通讯、嵌入式系统、数据存储等领域,可以帮助开发人员实现快速、可靠的数据交互,提高开发效率和产品质量。


* 关于本产品的分类与介绍仅供参考,精准产品资料以官网介绍为准,如需购买请先行测试。

产品介绍


XBinder是一个XML Schema到 C/C++、Java 或 C# 代码生成工具。XML数据绑定(或代码生成)是将 XML 模式信息项转换为计算机语言中的类型定义和函数的过程。
XBinder代码生成工具生成的源代码是由类型定义和编码/解码函数组成的C、C++、Java或C#源代码。这提供了一个完整的应用程序编程接口 (API),用于处理 XML 模式规范中包含的所有消息定义。
除了代码生成器之外,通用编码/解码函数的运行时库也是该包的一部分。该库包含编码和解码基本 XML 模式简单类型(整数、字符串、hexBinary 等)的例程。XBinder代码生成工具将对这些函数的一系列调用组合起来,完成更复杂消息类型的编码或解码。
评估版可用于 Windows、Linux、各种 UNIX 平台和 Apple Mac OSX。


为什么选择XML


XBinder的XML数据绑定与传统的XML API相比具有以下优势:

  • 高性能:验证或(反)序列化等操作使用从XML模式生成的代码比使用验证解析器更快
  • 简单快捷:XBinder可自动生成结构良好、易于阅读的代码,以缩短上市周期
  • 可靠性: XML数据绑定应用程序,通过模拟级别的工作来确保生成的XML文档有效且可靠


操作演示


假设您需要编写代码来解析下面的 XML 实例并打印出其中包含的所有数据。

John Smith Toys R Us Toy Bath Set 19.95 

在此页面上,我们将比较在没有 XBinder 的情况下解析此实例所需的代码量与使用 XBinder 进行解析所需的代码量。我们将在这两个示例中使用 C++。对于非 XBinder 代码,我们将使用 libxml++ DOM功能。

如果不使用XBinder,下面是需要编写的代码:

#include #include int main(){// Parse the XML file.xmlpp::DomParser parser;parser.set_substitute_entities();try{parser.parse_file("purchase.xml");}catch (std::exception& ex)            {               printf("\n%s", ex.what());            }              // Get the root node.            xmlpp::Node* pPurchaseNode = parser.get_document()->get_root_node();            Glib::ustring nodename = pPurchaseNode->get_name();              // Get the root node's children in a list.            xmlpp::Node::NodeList purchaseChildren = pPurchaseNode->get_children();              // Now walk through the children and process them according to what element            // is represented.            for (xmlpp::Node::NodeList::iterator iter = purchaseChildren.begin();            iter != purchaseChildren.end(); ++iter)            {               xmlpp::Node* pChildNode = *iter;               nodename = pChildNode->get_name();                 if (nodename == "text")               {                  // We'll get the text value for each element explicitly                  // as we encounter them.                  continue;               }               else if (nodename == "customer")               {                  // We're at the  node.  We want to print the customer                  // name and number.                  xmlpp::Element* pChildElement =                     dynamic_cast (pChildNode);                  xmlpp::Attribute* pCustomerAttr =                     pChildElement->get_attribute("number");                  printf("\nCustomer number:  %s", pCustomerAttr->get_value().c_str());                    xmlpp::TextNode* pChildText = pChildElement->get_child_text();                  printf("\nCustomer name:  %s", pChildText->get_content().c_str());               }               else if (nodename == "store")               {                  // We're at the  node.  We want to print the store name.                  xmlpp::Element* pChildElement =                     dynamic_cast (pChildNode);                  xmlpp::TextNode* pChildText = pChildElement->get_child_text();                  printf("\nStore name:  %s", pChildText->get_content().c_str());               }               else if (nodename == "item")               {                  // We're at the  node.  We want to print the item name.                  xmlpp::Element* pChildElement =                     dynamic_cast (pChildNode);                  xmlpp::TextNode* pChildText = pChildElement->get_child_text();                  printf("\nItem name:  %s", pChildText->get_content().c_str());               }               else if (nodename == "price")               {                  // We're at the  node.  We want to print the price.                  xmlpp::Element* pChildElement =                     dynamic_cast (pChildNode);                  xmlpp::TextNode* pChildText = pChildElement->get_child_text();                  printf("\nPrice:  %s", pChildText->get_content().c_str());               }            }              return 0;         }            

下面是需要使用XBinder编写的代码:

#include "rtxsrc/OSRTFileInputStream.h"#include "rtxmlsrc/rtXmlCppMsgBuf.h"#include#includeint main(){// Setup to decode the instance in purchase.xmlint stat;const char* filename = "Purchase.xml";            OSRTFileInputStream in (filename);            OSXMLDecodeBuffer decodeBuffer (in);            purchase_CC pdu (decodeBuffer);              // Do the decode            stat = pdu.decode();              // Print the information that was in the instance.            PurchaseRecord* pPurchase = pdu.getValue();            printf("\nCustomer number:  %d", pPurchase->customer.number);            printf("\nCustomer name:  %s", pPurchase->customer.value.c_str());            printf("\nStore name:  %s", pPurchase->store.c_str());            PurchaseRecord_3* pItemAndPrice = pPurchase->_seq3.getItem(0);            unsigned short i = 0;            while (pItemAndPrice != 0)            {               printf("\nItem name:  %s", pItemAndPrice->item.c_str());               printf("\nItem price:  %.2f", pItemAndPrice->price);               pItemAndPrice = pPurchase->_seq3.getItem(++i);            }            return stat;         }            

这些代码示例需要注意:

(1)不使用XBinder的代码所花费的时间大约是使用该代码的两倍

(2)XBinder大大减少了代码作者必须具备的有关XML实例结构的知识量。对于这个简单的实例,如果代码作者使用XBinder,他几乎不需要了解XML结构

(3)不使用XBinder的代码不会对XML语法进行任何验证。例如,如果与此实例关联的模式规定元素必须跟在元素之后,则不会检查该约束。

(4)添加这种类型的检查会使非XBinder代码比现在长很多! 基于模式的语法加固由XBinder在解码过程中完成。

(5)stat只需对XBinder示例中的变量值进行简单检查 即可将需要添加到基于XBinder的代码中。

最新版本下载

XBinder2.8.0是当前的最新版本。此版本于2022年8月18日发布。


更新时间:2023-05-24 16:38:05.000 | 录入时间:2023-04-17 15:39:12.567 | 责任编辑:吴秋红

相关产品
SocketTools ActiveX Edition

一套使你能够在你的应用程序中添加互联网功能的ActiveX控件。

SocketTools Library Edition

SocketTools库版是一套Windows库,可简化互联网应用开发

SocketTools Subscription

一套用于Windows软件开发的互联网组件和库

TOP Server OPC Server

工业4.0工业控制软件Software Toolbox's OPC和原生HMI设备的连接软件,采用业界领先的Kepware技术。

IoT Solutions

MQTT, Azure, Amazon, Google, Rest, & Edge物联网方案

扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP