﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-知新轩</title><link>http://www.blogjava.net/lixf/</link><description>温故而知新,可以为师矣.</description><language>zh-cn</language><lastBuildDate>Sun, 12 Apr 2026 07:53:20 GMT</lastBuildDate><pubDate>Sun, 12 Apr 2026 07:53:20 GMT</pubDate><ttl>60</ttl><item><title>mindjet “由于应用程序配置不正确,程序未能启动”－－原因及解决方法 </title><link>http://www.blogjava.net/lixf/archive/2008/05/26/202896.html</link><dc:creator>___</dc:creator><author>___</author><pubDate>Mon, 26 May 2008 05:48:00 GMT</pubDate><guid>http://www.blogjava.net/lixf/archive/2008/05/26/202896.html</guid><wfw:comment>http://www.blogjava.net/lixf/comments/202896.html</wfw:comment><comments>http://www.blogjava.net/lixf/archive/2008/05/26/202896.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lixf/comments/commentRss/202896.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lixf/services/trackbacks/202896.html</trackback:ping><description><![CDATA[解决方案：<br />
下载并安装Microsoft Visual C++ 2005 SP1 Redistributable Package (x86)<br />
http://www.microsoft.com/downloads/thankyou.aspx?familyId=200b2fd9-ae1a-4a14-984d-389c36f85647&amp;displayLang=zh-cn<br />
<br />
PS:<br />
一定得是SP1版本才行，装过Microsoft Visual C++ 2005 Redistributable Package (x86)，但是问题依旧。<br />
微软的补丁做的很细很强大啊。<br />
<img src ="http://www.blogjava.net/lixf/aggbug/202896.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lixf/" target="_blank">___</a> 2008-05-26 13:48 <a href="http://www.blogjava.net/lixf/archive/2008/05/26/202896.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>struts2 集成 Crystal Report(水晶报表)</title><link>http://www.blogjava.net/lixf/archive/2008/02/23/181667.html</link><dc:creator>___</dc:creator><author>___</author><pubDate>Sat, 23 Feb 2008 14:21:00 GMT</pubDate><guid>http://www.blogjava.net/lixf/archive/2008/02/23/181667.html</guid><wfw:comment>http://www.blogjava.net/lixf/comments/181667.html</wfw:comment><comments>http://www.blogjava.net/lixf/archive/2008/02/23/181667.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lixf/comments/commentRss/181667.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lixf/services/trackbacks/181667.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 在struts2中,japserreport通过编写插件扩展"result-types"的形式实现了跟struts2的集成,本文将采用相同的集成方式,将Crystal Report与struts2集成.&nbsp;&nbsp;<a href='http://www.blogjava.net/lixf/archive/2008/02/23/181667.html'>阅读全文</a><img src ="http://www.blogjava.net/lixf/aggbug/181667.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lixf/" target="_blank">___</a> 2008-02-23 22:21 <a href="http://www.blogjava.net/lixf/archive/2008/02/23/181667.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>框架为骨,应用为肉,架构为魂.</title><link>http://www.blogjava.net/lixf/archive/2007/08/01/133823.html</link><dc:creator>___</dc:creator><author>___</author><pubDate>Wed, 01 Aug 2007 08:16:00 GMT</pubDate><guid>http://www.blogjava.net/lixf/archive/2007/08/01/133823.html</guid><wfw:comment>http://www.blogjava.net/lixf/comments/133823.html</wfw:comment><comments>http://www.blogjava.net/lixf/archive/2007/08/01/133823.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lixf/comments/commentRss/133823.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lixf/services/trackbacks/133823.html</trackback:ping><description><![CDATA[框架为骨,应用为肉,架构为魂.
<img src ="http://www.blogjava.net/lixf/aggbug/133823.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lixf/" target="_blank">___</a> 2007-08-01 16:16 <a href="http://www.blogjava.net/lixf/archive/2007/08/01/133823.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>编码若禹王制水,宜疏不宜堵.</title><link>http://www.blogjava.net/lixf/archive/2007/07/05/128300.html</link><dc:creator>___</dc:creator><author>___</author><pubDate>Thu, 05 Jul 2007 03:56:00 GMT</pubDate><guid>http://www.blogjava.net/lixf/archive/2007/07/05/128300.html</guid><wfw:comment>http://www.blogjava.net/lixf/comments/128300.html</wfw:comment><comments>http://www.blogjava.net/lixf/archive/2007/07/05/128300.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lixf/comments/commentRss/128300.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lixf/services/trackbacks/128300.html</trackback:ping><description><![CDATA[编码若禹王制水,宜疏不宜堵.
<img src ="http://www.blogjava.net/lixf/aggbug/128300.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lixf/" target="_blank">___</a> 2007-07-05 11:56 <a href="http://www.blogjava.net/lixf/archive/2007/07/05/128300.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>win32下使用gcc编译供java 调用的dll须知(jni)</title><link>http://www.blogjava.net/lixf/archive/2005/12/23/25177.html</link><dc:creator>___</dc:creator><author>___</author><pubDate>Fri, 23 Dec 2005 02:47:00 GMT</pubDate><guid>http://www.blogjava.net/lixf/archive/2005/12/23/25177.html</guid><wfw:comment>http://www.blogjava.net/lixf/comments/25177.html</wfw:comment><comments>http://www.blogjava.net/lixf/archive/2005/12/23/25177.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/lixf/comments/commentRss/25177.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lixf/services/trackbacks/25177.html</trackback:ping><description><![CDATA[<P align=left>使用gcc(win32)根据java导出的jini头文件,编译出的动态库,无法被java正常的调用.而相同的头文件,使用vc6编译出的dll则可以.函数声明如下:<BR><FONT color=#ff0000>JNIEXPORT jint JNICALL Java_DataModule_VersionCtrl_CPP_1SrvVsn_1Depend<BR>&nbsp; (JNIEnv *, jobject, jstring, jint, jstring, jint, jint, jstring);<BR></FONT>其中:<BR>JNIEXPORT&nbsp; 在gcc和vc6的中都是定义为 __declspec(dllexport)<BR>JNICALL&nbsp; 在两种编译环境下也都是定义为 __stdcall<BR>观察两种环境下生成的dll,发现这两个dll导出的函数名称有所区别.<BR>一个是 <FONT size=2>(gcc)</FONT><BR><FONT color=#ff0000 size=2><STRONG>Java_DataModule_VersionCtrl_CPP_1SrvVsn_1Depend@32<BR></STRONG></FONT>另一个是<FONT size=2>(vc6)</FONT><BR>&nbsp;<FONT size=2><STRONG><FONT color=#ff0000>_Java_DataModule_VersionCtrl_CPP_1SrvVsn_1Depend@32<BR></FONT></STRONG><FONT size=3><FONT color=#0000ff><STRONG>相差了一个下划线!!</STRONG></FONT><BR>难道是因为gcc编译出的函数名称与java预期的不一致,导致其在java中不能被正常的调用?于是,手动修改用于gcc编译的jini头文件中的函数声明,在其原有名称前加一个下划线,使其与vc6的输出的名称一致,并相应修改函数定义中的函数名称.重现编译之,并再次于java中调用,竟然通过了.<BR><BR>google搜索 __stdcall<BR><BR><FONT color=#008000><FONT color=#ff0000>发现不同编译器对__stdcall的实现是不同的,所以导致相同的声明下,输出函数名不一致.而java在win32平台下默认是以微软的vc6的编译输出格式为标准进行调用的.所以相同的头文件vc6可以,而gcc不行,(bcb也不行)</FONT><BR></FONT>或许java有选项可以输出兼容于其他编译器的JNI头文件吧.^_^.</FONT></FONT></P><img src ="http://www.blogjava.net/lixf/aggbug/25177.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lixf/" target="_blank">___</a> 2005-12-23 10:47 <a href="http://www.blogjava.net/lixf/archive/2005/12/23/25177.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>migw中使用libxml解析xml</title><link>http://www.blogjava.net/lixf/archive/2005/12/07/22832.html</link><dc:creator>___</dc:creator><author>___</author><pubDate>Wed, 07 Dec 2005 03:40:00 GMT</pubDate><guid>http://www.blogjava.net/lixf/archive/2005/12/07/22832.html</guid><wfw:comment>http://www.blogjava.net/lixf/comments/22832.html</wfw:comment><comments>http://www.blogjava.net/lixf/archive/2005/12/07/22832.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lixf/comments/commentRss/22832.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lixf/services/trackbacks/22832.html</trackback:ping><description><![CDATA[<P>1,编码时需要包括头文件:#include &lt;libxml/globals.h&gt;,编译时需要链接 -lxml2 -lwsock32 的库文件.<BR>2,xmlexports.h需要修改部分代码才可以被正常连接,否则使用xmlfree函数时会报"_imp__xmlFree"的链接错误.<BR>&nbsp;&nbsp;&nbsp;修改代码如下:<BR>&nbsp;&nbsp;&nbsp;将 #if defined(_WIN32) &amp;&amp; defined(__MINGW32__) 代码段,包括:<BR>&nbsp;&nbsp;&nbsp;#if defined(_WIN32) &amp;&amp; defined(__MINGW32__)<BR>&nbsp; #undef XMLPUBFUN<BR>&nbsp; #undef XMLPUBVAR<BR>&nbsp; #undef XMLCALL<BR>&nbsp; #if defined(IN_LIBXML) &amp;&amp; !defined(LIBXML_STATIC)<BR>&nbsp;&nbsp;&nbsp; #define XMLPUBFUN __declspec(dllexport)<BR>&nbsp;&nbsp;&nbsp; #define XMLPUBVAR __declspec(dllexport)<BR>&nbsp; #else<BR>&nbsp;&nbsp;&nbsp; #define XMLPUBFUN<BR>&nbsp;&nbsp;&nbsp; #if !defined(LIBXML_STATIC)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #define XMLPUBVAR __declspec(dllimport) extern<BR>&nbsp;&nbsp;&nbsp; #else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #define XMLPUBVAR extern<BR>&nbsp;&nbsp;&nbsp; #endif<BR>&nbsp; #endif<BR>&nbsp; #define XMLCALL __cdecl<BR>&nbsp; #if !defined _REENTRANT<BR>&nbsp;&nbsp;&nbsp; #define _REENTRANT<BR>&nbsp; #endif<BR>#endif<BR>注释掉,然后在原有位置添上:<BR>#if defined(_WIN32) &amp;&amp; defined(__MINGW32__)<BR>&nbsp;&nbsp; #define XMLPUBFUN<BR>&nbsp;&nbsp; #ifdef __cplusplus<BR>&nbsp;&nbsp;&nbsp;&nbsp; #define XMLPUBVAR extern<BR>&nbsp;&nbsp; #else<BR>&nbsp;&nbsp;&nbsp;&nbsp; #define XMLPUBVAR<BR>&nbsp;&nbsp; #endif<BR>&nbsp;&nbsp; #if !defined _REENTRANT<BR>&nbsp;&nbsp;&nbsp;&nbsp; #define _REENTRANT<BR>&nbsp;&nbsp; #endif<BR>#endif<BR>&nbsp;&nbsp;&nbsp;具体原因及详细信信息 <A href="http://mail.gnome.org/archives/xml/2004-February/msg00007.html">http://mail.gnome.org/archives/xml/2004-February/msg00007.html</A><BR>3,解析xml.<BR>&nbsp;&nbsp;&nbsp;这里,我们以解析内容如下的xml文件为例:<BR>&nbsp;&nbsp;&nbsp;"<BR>&nbsp;&nbsp;&nbsp;&lt;?xml version="1.0" encoding="UTF-8"?&gt;<BR>&nbsp;&nbsp;&nbsp;&lt;NodeRoot ver = "000"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;Node1 ver = "111"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;Node2 ver = "222"/&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/Node1&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;Node3 ver = "333"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v3<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;Node3/&gt;<BR>&nbsp;&nbsp;&nbsp;&lt;/NodeRoot&gt;<BR>&nbsp;&nbsp;&nbsp;"<BR>&nbsp;&nbsp;&nbsp;首先,打开xml文件,使用:<BR>&nbsp;&nbsp;&nbsp;XMLPUBFUN xmlDocPtr XMLCALL&nbsp;&nbsp;&nbsp;xmlParseFile&nbsp;&nbsp;(const char *filename); (libxml/parser.h)<BR>&nbsp;&nbsp;&nbsp;获得xml的根节点,使用:<BR>&nbsp;&nbsp;&nbsp;XMLPUBFUN xmlNodePtr XMLCALL&nbsp;xmlDocGetRootElement&nbsp;(xmlDocPtr doc);(libxml/tree.h)<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;例:<BR>&nbsp;&nbsp;int ParseXMLFile(char *pXMLFileName)<BR>&nbsp;&nbsp;&nbsp;// retval:<BR>&nbsp;&nbsp;&nbsp;// 0 : Success<BR>&nbsp;&nbsp;&nbsp;// -1: Error ,for xml file open<BR>&nbsp;&nbsp;&nbsp;// -2: Error ,for xml file parse<BR>&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int retval = 0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlDocPtr doc = NULL;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlNodePtr cur = NULL;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;doc = xmlParseFile(pXMLFileName);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (doc == NULL )&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fprintf(stderr,"XMLParser:Document not parsed successfully. \n");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retval = -1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;goto ERROR_RET;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cur = xmlDocGetRootElement(doc);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 会得到NodeRoot 节点.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (cur == NULL)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fprintf(stderr,"XMLParser:Empty document.\n");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retval = -2;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;goto ERROR_RET;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</P>
<P><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp; ...&nbsp; do something<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parsexml(doc,cur);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 定义见下面.</P>
<P><BR>&nbsp;&nbsp;&nbsp;&nbsp;ERROR_RET:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(doc != NULL)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlFreeDoc(doc);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return retval;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;其中,:<BR>&nbsp;&nbsp;&nbsp;结构xmlNodePtr&nbsp;定义如下(libxml/tree.h):<BR>&nbsp;&nbsp;&nbsp;&nbsp;typedef struct _xmlNode xmlNode;<BR>&nbsp;&nbsp;&nbsp;&nbsp;typedef xmlNode *xmlNodePtr;<BR>&nbsp;&nbsp;&nbsp;&nbsp;struct _xmlNode {<BR>&nbsp;&nbsp;&nbsp; void&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *_private;&nbsp;/* application data */<BR>&nbsp;&nbsp;&nbsp; xmlElementType&nbsp;&nbsp; type;&nbsp;/* type number, must be second ! */<BR>&nbsp;&nbsp;&nbsp; const xmlChar&nbsp;&nbsp; *name;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* the name of the node, or the entity */&nbsp;<BR>&nbsp;&nbsp;&nbsp; struct _xmlNode *children;&nbsp;/* parent-&gt;childs link */<BR>&nbsp;&nbsp;&nbsp; struct _xmlNode *last;&nbsp;/* last child link */<BR>&nbsp;&nbsp;&nbsp; struct _xmlNode *parent;&nbsp;/* child-&gt;parent link */<BR>&nbsp;&nbsp;&nbsp; struct _xmlNode *next;&nbsp;/* next sibling link&nbsp; */<BR>&nbsp;&nbsp;&nbsp; struct _xmlNode *prev;&nbsp;/* previous sibling link&nbsp; */<BR>&nbsp;&nbsp;&nbsp; struct _xmlDoc&nbsp; *doc;&nbsp;/* the containing document */</P>
<P>&nbsp;&nbsp;&nbsp; /* End of common part */<BR>&nbsp;&nbsp;&nbsp; xmlNs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *ns;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* pointer to the associated namespace */<BR>&nbsp;&nbsp;&nbsp; xmlChar&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *content;&nbsp;&nbsp; /* the content */<BR>&nbsp;&nbsp;&nbsp; struct _xmlAttr *properties;/* properties list */<BR>&nbsp;&nbsp;&nbsp; xmlNs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *nsDef;&nbsp;&nbsp;&nbsp;&nbsp; /* namespace definitions on this node */<BR>&nbsp;&nbsp;&nbsp; void&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *psvi;&nbsp;/* for type/PSVI informations */<BR>&nbsp;&nbsp;&nbsp; unsigned short&nbsp;&nbsp; line;&nbsp;/* line number */<BR>&nbsp;&nbsp;&nbsp; unsigned short&nbsp;&nbsp; extra;&nbsp;/* extra data for XPath/XSLT */<BR>&nbsp;&nbsp;&nbsp;&nbsp;};<BR>&nbsp;&nbsp;&nbsp;&nbsp;我们可以使用节点结构中的指针成员来遍历xml树中的各个节点.<BR>&nbsp;&nbsp;&nbsp; 我一般使用递归的方式遍历xml树:<BR>&nbsp;&nbsp;&nbsp;int parsexml(xmlDocPtr doc, xmlNodePtr cur)<BR>&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while (cur != NULL)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// do something about every node<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("name: %s\n",cur-&gt;name);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp; for example,we get the "ver" attribute of every node<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlChar *uri = NULL;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uri = xmlGetProp(cur,(const xmlChar *) "ver");&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(uri != NULL)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("ver: %s\n", uri);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlFree(uri);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;&nbsp; // ... others</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parsexml(doc,cur-&gt;xmlChildrenNode);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cur = cur-&gt;next;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;对于我们已经获取的结点,我们可以使用以下函数获取其各项属性各项属性:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XMLPUBFUN xmlChar * XMLCALL&nbsp;xmlGetProp&nbsp;&nbsp;(xmlNodePtr node,const xmlChar *name); (libxml/tree.h)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;获得该节点的某项属性,其中,属性名称使用&nbsp;第二个参数name指定,第一个参数需要传入结点指针.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;属性的值通过函数返回传出,返回类型是 xmlChar,这里注意,返回的地址是指向堆的,这意味着你需要<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在使用完毕后,手动释放这块内存.这里使用xmlfree函数,并将指针传入即可.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;更多函数参见 libxml/tree.h<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;最后,你需要调用xmlFreeDoc函数进行必要的释放工作.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;完整代码:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A href="/Files/lixf/testlibxml.rar">http://www.blogjava.net/Files/lixf/testlibxml.rar</A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;</P><img src ="http://www.blogjava.net/lixf/aggbug/22832.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lixf/" target="_blank">___</a> 2005-12-07 11:40 <a href="http://www.blogjava.net/lixf/archive/2005/12/07/22832.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>