D Bus学习(七):利用XML定义D Bus之Client的例子
继续学习D-Bus。之前学习了使用底层的API来发送,监听消息的方式。在
D-
Bus学习(四):基础小例子(同步和异步)
之中,我们给出了利用proxy进行发送method_call,并等待method_reply或者error的client情况。在D-Bus中,可以将D-Bus接口定义用XML格式表述处理,并利用工具,自动生成头文件,给出工整的调用方式。下面是一个XML的例子。
<?xml version="1.0" encoding="UTF-8" ?>
<node name="/com/wei/MyObject">
<interface name="com.wei.MyObject.Sample">
<method name="Test">
<annotation name="org.freedesktop.DBus.GLib.CSymbol" value="wei_response" />
<arg type="u" name="x" direction="in" />
<arg type="d" name="d_ret" direction="out" />
</method >
</interface >
</node >
其中annotation是作为server用,在下一次学习中使用。我们给这个xml文件一个名字,wei.xml。结合我们上两次学习中的图,node实际上就是相当于对象,用path来进行描述。使用dbus-bingding-tool来生成头文件:
dbus-binding-tool --mode=glib-client --prefix=com_wei
wei.xml
>
wei_client.h
头文件中给出了同步调用和异步调用的内容,我们给出一个前缀com_wei,将在头文件中出现,头文件内容如下:
/* Generated by dbus-binding-tool; do not edit! */
#include <glib.h>
#include <dbus/dbus-glib.h>
G_BEGIN_DECLS
#ifndef _DBUS_GLIB_ASYNC_DATA_FREE
#define _DBUS_GLIB_ASYNC_DATA_FREE
static
#ifdef G_HAVE_INLINE
inline
#endif
void
_dbus_glib_async_data_free (gpointer stuff)
{
g_slice_free (DBusGAsyncData, stuff);
}
#endif
#ifndef DBUS_GLIB_CLIENT_WRAPPERS_com_wei_MyObject_Sample
#define DBUS_GLIB_CLIENT_WRAPPERS_com_wei_MyObject_Sample
static
#ifdef G_HAVE_INLINE
inline
#endif
//这是同步调用内容
gboolean
com_wei
_M
相关文档:
可以将XML文件的树(只有一个顶层节点).于是理所当然的可以用树作为XML的一种存储结构.
我将在这里用C++实现对简单的XML文件的解析.
1.选择存储结构:
树型数据结构有多种存储方式,我将用"孩子兄弟表示法",定义如下:
typedef struct CSNode
{
int subNodes;
string data;
string name;
struct CSNode *fi ......
XML现在已经成为一种通用的数据交换格式,平台的无关性使得很多场合都需要用到XML。本文将详细介绍用Java解析XML的四种方法。
XML现在已经成为一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便。对于XML本身的语法知识与技术细节,需要阅读相关的技术文献,这里面包括的内容 ......
在最近的项目中,偶遇到一个可以说很小的问题,静下心来,有想把它记下来的冲动,随产生这不成文的几段文字。
在我用ReadXml()和ReadSchema()读取XML文件时,总是出现异常,后来经过调试发现报XmlException异常并提示“缺少根元素&rd ......
xml_parse解析xml文件时候,
很有可能不仅仅调用一次character_handler。
所以在获得xml节点的文本信息的时候,要用连接运算".="。
参考 http://jp2.php.net/manual/ro/function.xml-set-character-data-handler.php
ken at positive-edge dot com
30-Jan-2002
01:20
the function handler is called ......
用c#给PDA做了一个PC端的通讯程序,需要保存两个参数。用Delphi时,是保存在ini文件中,c#读写XML比较方便,就用xml文件来保存了。
class CXmlClass
{
private string XmlFilePath;
/// <summary>
/// 下载到PDA的TXT文件路径
/// </summary>
......